diff options
author | Khoo Hao Yit <40757009+KhooHaoYit@users.noreply.github.com> | 2022-03-16 20:45:45 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-16 20:45:45 +0300 |
commit | 6d3920d579a3dc3a1e15875a15fb54e3ff4201c0 (patch) | |
tree | 94e76afb881bd89fd522cbce5eeef205fdd087b8 /lib | |
parent | 6a51306213cf8f6693d5a817fbd6f14361d84aac (diff) |
stream: do cleanup when iterator is destroyed
PR-URL: https://github.com/nodejs/node/pull/42320
Reviewed-By: Robert Nagy <ronagy@icloud.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Nitzan Uziely <linkgoron@gmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/internal/streams/readable.js | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/internal/streams/readable.js b/lib/internal/streams/readable.js index 3fcd373cb1c..4b7613fd13d 100644 --- a/lib/internal/streams/readable.js +++ b/lib/internal/streams/readable.js @@ -1122,7 +1122,7 @@ async function* createAsyncIterator(stream, options) { stream.on('readable', next); let error; - eos(stream, { writable: false }, (err) => { + const cleanup = eos(stream, { writable: false }, (err) => { error = err ? aggregateTwoErrors(error, err) : null; callback(); callback = nop; @@ -1150,6 +1150,9 @@ async function* createAsyncIterator(stream, options) { (error === undefined || stream._readableState.autoDestroy) ) { destroyImpl.destroyer(stream, null); + } else { + stream.off('readable', next); + cleanup(); } } } |