Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/_stream_readable.js4
-rw-r--r--test/parallel/test-stream-pipe-unpipe-streams.js10
2 files changed, 12 insertions, 2 deletions
diff --git a/lib/_stream_readable.js b/lib/_stream_readable.js
index 1df50ba200f..0d7724efc08 100644
--- a/lib/_stream_readable.js
+++ b/lib/_stream_readable.js
@@ -819,7 +819,7 @@ Readable.prototype.unpipe = function(dest) {
// remove all.
var dests = state.pipes;
state.pipes = [];
- state.flowing = false;
+ this.pause();
for (const dest of dests)
dest.emit('unpipe', this, { hasUnpiped: false });
@@ -833,7 +833,7 @@ Readable.prototype.unpipe = function(dest) {
state.pipes.splice(index, 1);
if (state.pipes.length === 0)
- state.flowing = false;
+ this.pause();
dest.emit('unpipe', this, unpipeInfo);
diff --git a/test/parallel/test-stream-pipe-unpipe-streams.js b/test/parallel/test-stream-pipe-unpipe-streams.js
index 4cb8413af22..b1a673d9450 100644
--- a/test/parallel/test-stream-pipe-unpipe-streams.js
+++ b/test/parallel/test-stream-pipe-unpipe-streams.js
@@ -84,3 +84,13 @@ assert.strictEqual(source._readableState.pipes.length, 0);
checkDestCleanup(dest2);
source.unpipe();
}
+
+{
+ const src = Readable({ read: () => {} });
+ const dst = Writable({ write: () => {} });
+ src.pipe(dst);
+ src.on('resume', common.mustCall(() => {
+ src.on('pause', common.mustCall());
+ src.unpipe(dst);
+ }));
+}