diff options
author | Robert Nagy <ronagy@icloud.com> | 2019-12-16 22:33:47 +0300 |
---|---|---|
committer | Ruben Bridgewater <ruben@bridgewater.de> | 2019-12-20 03:38:35 +0300 |
commit | 20d009d2fdab313bb2cfb789881f1f9364474a62 (patch) | |
tree | 4032a98fd4ef40bd638e3b9943b6101c321f72fa /lib | |
parent | db9539bba4d62db3b73baf1575a9c3dfcd4d1f32 (diff) |
stream: pipe should not swallow error
PR-URL: https://github.com/nodejs/node/pull/30993
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/_stream_readable.js | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/_stream_readable.js b/lib/_stream_readable.js index d69e5aa5b35..63efff40373 100644 --- a/lib/_stream_readable.js +++ b/lib/_stream_readable.js @@ -798,7 +798,9 @@ Readable.prototype.pipe = function(dest, pipeOpts) { unpipe(); dest.removeListener('error', onerror); if (EE.listenerCount(dest, 'error') === 0) { - if (!dest.destroyed) { + const s = dest._writableState || dest._readableState; + if (s && !s.errorEmitted) { + // User incorrectly emitted 'error' directly on the stream. errorOrDestroy(dest, er); } else { dest.emit('error', er); |