diff --git a/request.js b/request.js index 2d53e4b04..e1679f0a1 100644 --- a/request.js +++ b/request.js @@ -1510,6 +1510,14 @@ Request.prototype.onRequestResponse = function (response) { self.emit('end', chunk) }) responseContent.on('error', function (error) { + if (error.code === 'ECONNRESET' && error.message === 'aborted' && self.listenerCount('error') === 0) { + // Node 16 causes aborts to emit errors if there is an error listener. + // Without this short-circuit, it will cause unhandled exceptions since + // there is not always an `error` listener on `self`, but there will + // always be an `error` listener on `responseContent`. + // @see https://github.com/nodejs/node/pull/33172 + return + } self.emit('error', error) }) responseContent.on('close', function () { self.emit('close') })