File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -864,6 +864,10 @@ OutgoingMessage..write = function write(chunk, encoding, callback) {
864864
};
865865

866866
function onError(msg, err, callback) {
867+
if (msg.destroyed) {
868+
return;
869+
}
870+
867871
const triggerAsyncId = msg.socket ? msg.socket[async_id_symbol] : undefined;
868872
defaultTriggerAsyncIdScope(triggerAsyncId,
869873
process.nextTick,
@@ -875,7 +879,7 @@ function onError(msg, err, callback) {
875879

876880
function emitErrorNt(msg, err, callback) {
877881
callback(err);
878-
if (typeof msg.emit === 'function' && !msg._closed) {
882+
if (typeof msg.emit === 'function' && !msg.destroyed) {
879883
msg.emit('error', err);
880884
}
881885
}
Original file line numberDiff line numberDiff line change
@@ -51,5 +51,27 @@ const assert = require('assert');
5151
.on('error', common.mustCall())
5252
.write('asd');
5353
});
54+
}
5455

56+
{
57+
const server = http.createServer(common.mustCall((req, res) => {
58+
assert.strictEqual(res.closed, false);
59+
res.end();
60+
res.destroy();
61+
// Make sure not to emit 'error' after .destroy().
62+
res.end('asd');
63+
assert.strictEqual(res.errored, undefined);
64+
})).listen(0, () => {
65+
http
66+
.request({
67+
port: server.address().port,
68+
method: 'GET'
69+
})
70+
.on('response', common.mustCall((res) => {
71+
res.resume().on('end', common.mustCall(() => {
72+
server.close();
73+
}));
74+
}))
75+
.end();
76+
});
5577
}

0 commit comments

Comments
 (0)