mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 21:19:50 +01:00
b34c5a27c6
When piping a paused Readable to a full Writable we didn't register a drain listener which cause the src to never resume. Refs: https://github.com/nodejs/node/issues/48666 PR-URL: https://github.com/nodejs/node/pull/48691 Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
28 lines
690 B
JavaScript
28 lines
690 B
JavaScript
'use strict';
|
|
|
|
const common = require('../common');
|
|
const { Readable, Writable } = require('stream');
|
|
|
|
// https://github.com/nodejs/node/issues/48666
|
|
(async () => {
|
|
// Prepare src that is internally ended, with buffered data pending
|
|
const src = new Readable({ read() {} });
|
|
src.push(Buffer.alloc(100));
|
|
src.push(null);
|
|
src.pause();
|
|
|
|
// Give it time to settle
|
|
await new Promise((resolve) => setImmediate(resolve));
|
|
|
|
const dst = new Writable({
|
|
highWaterMark: 1000,
|
|
write(buf, enc, cb) {
|
|
process.nextTick(cb);
|
|
}
|
|
});
|
|
|
|
dst.write(Buffer.alloc(1000)); // Fill write buffer
|
|
dst.on('finish', common.mustCall());
|
|
src.pipe(dst);
|
|
})().then(common.mustCall());
|