| 520 | } |
| 521 | |
| 522 | function generateErrorFromResponse(err) { |
| 523 | |
| 524 | if (typeof err !== 'object') { |
| 525 | var data = err; |
| 526 | err = UNKNOWN_ERROR; |
| 527 | err.data = data; |
| 528 | } |
| 529 | |
| 530 | if ('error' in err && err.error === 'conflict') { |
| 531 | err.name = 'conflict'; |
| 532 | err.status = 409; |
| 533 | } |
| 534 | |
| 535 | if (!('name' in err)) { |
| 536 | err.name = err.error || 'unknown'; |
| 537 | } |
| 538 | |
| 539 | if (!('status' in err)) { |
| 540 | err.status = 500; |
| 541 | } |
| 542 | |
| 543 | if (!('message' in err)) { |
| 544 | err.message = err.message || err.reason; |
| 545 | } |
| 546 | |
| 547 | if (!('stack' in err)) { |
| 548 | err.stack = (new Error()).stack; |
| 549 | } |
| 550 | |
| 551 | return err; |
| 552 | } |
| 553 | |
| 554 | function tryFilter(filter, doc, req) { |
| 555 | try { |