diff --git a/doc/api/errors.md b/doc/api/errors.md index 5127b9f571acc0..2d4f3f02e94e79 100644 --- a/doc/api/errors.md +++ b/doc/api/errors.md @@ -580,6 +580,11 @@ by the `assert` module. Used when attempting to perform an operation outside the bounds of a `Buffer`. + +### ERR_CHILD_CLOSED_BEFORE_REPLY + +Used when a child process is closed before the parent received a reply. + ### ERR_CONSOLE_WRITABLE_STREAM diff --git a/lib/internal/errors.js b/lib/internal/errors.js index 31c8fa945aeb64..1634a09a893c56 100644 --- a/lib/internal/errors.js +++ b/lib/internal/errors.js @@ -102,6 +102,7 @@ module.exports = exports = { E('ERR_ARG_NOT_ITERABLE', '%s must be iterable'); E('ERR_ASSERTION', '%s'); E('ERR_BUFFER_OUT_OF_BOUNDS', bufferOutOfBounds); +E('ERR_CHILD_CLOSED_BEFORE_REPLY','Child closed before reply received'); E('ERR_CONSOLE_WRITABLE_STREAM', 'Console expects a writable stream instance for %s'); E('ERR_CPU_USAGE', 'Unable to obtain cpu usage %s'); @@ -176,7 +177,7 @@ E('ERR_UNKNOWN_STDIN_TYPE', 'Unknown stdin file type'); E('ERR_UNKNOWN_STREAM_TYPE', 'Unknown stream file type'); E('ERR_V8BREAKITERATOR', 'Full ICU data not installed. ' + 'See https://github.com/nodejs/node/wiki/Intl'); -// Add new errors from here... + function invalidArgType(name, expected, actual) { assert(name, 'name is required'); diff --git a/lib/internal/socket_list.js b/lib/internal/socket_list.js index 15e880ba8c13d4..f6091c0c66055d 100644 --- a/lib/internal/socket_list.js +++ b/lib/internal/socket_list.js @@ -1,5 +1,7 @@ 'use strict'; +const errors = require('internal/errors'); + const EventEmitter = require('events'); // This object keeps track of the sockets that are sent @@ -18,7 +20,7 @@ class SocketListSend extends EventEmitter { function onclose() { self.child.removeListener('internalMessage', onreply); - callback(new Error('child closed before reply')); + callback(new errors.Error('ERR_CHILD_CLOSED_BEFORE_REPLY')); } function onreply(msg) { diff --git a/test/parallel/test-internal-socket-list-send.js b/test/parallel/test-internal-socket-list-send.js index 10413bfdbcb839..797baf43f4dd76 100644 --- a/test/parallel/test-internal-socket-list-send.js +++ b/test/parallel/test-internal-socket-list-send.js @@ -17,7 +17,11 @@ const key = 'test-key'; const list = new SocketListSend(child, 'test'); list._request('msg', 'cmd', common.mustCall((err) => { - assert.strictEqual(err.message, 'child closed before reply'); + common.expectsError({ + code: 'ERR_CHILD_CLOSED_BEFORE_REPLY', + type: Error, + message: 'Child closed before reply received' + })(err); assert.strictEqual(child.listenerCount('internalMessage'), 0); })); } @@ -55,7 +59,11 @@ const key = 'test-key'; const list = new SocketListSend(child, key); list._request('msg', 'cmd', common.mustCall((err) => { - assert.strictEqual(err.message, 'child closed before reply'); + common.expectsError({ + code: 'ERR_CHILD_CLOSED_BEFORE_REPLY', + type: Error, + message: 'Child closed before reply received' + })(err); assert.strictEqual(child.listenerCount('internalMessage'), 0); })); } @@ -119,7 +127,7 @@ const key = 'test-key'; const count = 1; const child = Object.assign(new EventEmitter(), { connected: true, - send: function(msg) { + send: function() { process.nextTick(() => { this.emit('disconnect'); this.emit('internalMessage', { key, count, cmd: 'NODE_SOCKET_COUNT' }); @@ -129,8 +137,12 @@ const key = 'test-key'; const list = new SocketListSend(child, key); - list.getConnections(common.mustCall((err, msg) => { - assert.strictEqual(err.message, 'child closed before reply'); + list.getConnections(common.mustCall((err) => { + common.expectsError({ + code: 'ERR_CHILD_CLOSED_BEFORE_REPLY', + type: Error, + message: 'Child closed before reply received' + })(err); assert.strictEqual(child.listenerCount('internalMessage'), 0); })); }