node/test/parallel/test-stream-pipe-deadlock.js

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());