| 532 | } |
| 533 | |
| 534 | function generateErrorFromResponse(err) { |
| 535 | |
| 536 | if (typeof err !== 'object') { |
| 537 | var data = err; |
| 538 | err = UNKNOWN_ERROR; |
| 539 | err.data = data; |
| 540 | } |
| 541 | |
| 542 | if ('error' in err && err.error === 'conflict') { |
| 543 | err.name = 'conflict'; |
| 544 | err.status = 409; |
| 545 | } |
| 546 | |
| 547 | if (!('name' in err)) { |
| 548 | err.name = err.error || 'unknown'; |
| 549 | } |
| 550 | |
| 551 | if (!('status' in err)) { |
| 552 | err.status = 500; |
| 553 | } |
| 554 | |
| 555 | if (!('message' in err)) { |
| 556 | err.message = err.message || err.reason; |
| 557 | } |
| 558 | |
| 559 | if (!('stack' in err)) { |
| 560 | err.stack = (new Error()).stack; |
| 561 | } |
| 562 | |
| 563 | return err; |
| 564 | } |
| 565 | |
| 566 | function tryFilter(filter, doc, req) { |
| 567 | try { |