Skip to content

Commit b0c400a

Browse files
committed
Properly serialize ECONNREFUSED errors (#27)
1 parent 2e9b05e commit b0c400a

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

packages/rest-client/lib/base.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
const query = require('qs');
2+
const { Unavailable } = require('@feathersjs/errors');
3+
const { _ } = require('@feathersjs/commons');
24
const { stripSlashes } = require('@feathersjs/commons');
35
const { convert } = require('@feathersjs/errors');
46

57
function toError (error) {
8+
if (error.code === 'ECONNREFUSED') {
9+
throw new Unavailable(error.message, _.pick(error, 'address', 'port', 'config'));
10+
}
11+
612
throw convert(error);
713
}
814

packages/rest-client/test/axios.test.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,18 @@ describe('Axios REST connector', function () {
7777
assert.equal(error.code, 406);
7878
});
7979
});
80+
81+
it('ECONNREFUSED errors are serializable', () => {
82+
const url = 'http://localhost:60000';
83+
const setup = rest(url).axios(axios);
84+
const app = feathers().configure(setup);
85+
86+
return app.service('something').find().catch(e => {
87+
const err = JSON.parse(JSON.stringify(e));
88+
89+
assert.equal(err.name, 'Unavailable');
90+
assert.equal(err.message, 'connect ECONNREFUSED 127.0.0.1:60000');
91+
assert.ok(e.data.config);
92+
});
93+
});
8094
});

0 commit comments

Comments
 (0)