1 | var Bluebird = require('bluebird');
|
2 |
|
3 |
|
4 | module.exports = issueRequest;
|
5 |
|
6 |
|
7 | function issueRequest (request) {
|
8 | return Bluebird.resolve(request)
|
9 | .catch(normalizeResponseError)
|
10 | .then(function (res) {
|
11 |
|
12 | res.statusCode = res.status;
|
13 |
|
14 | return res;
|
15 | });
|
16 | }
|
17 |
|
18 | function normalizeResponseError (err) {
|
19 | var error;
|
20 | var res = err.response;
|
21 |
|
22 | if (!res) {
|
23 | error = new Error(err.message);
|
24 | } else if (res.clientError) {
|
25 | error = new Error('Invalid request: '
|
26 | + res.body && res.body.message
|
27 | ? res.body.message
|
28 | : res.text);
|
29 | } else if (res.serverError) {
|
30 | error = new Error('Server error: '
|
31 | + res.body && res.body.message
|
32 | ? res.body.message
|
33 | : res.text);
|
34 | }
|
35 |
|
36 | Object.defineProperty(error, 'stack', { get: function () { return err.stack; }});
|
37 |
|
38 | error.statusCode = err.status || 500;
|
39 |
|
40 | throw error;
|
41 | }
|