// deno-fmt-ignore-file // deno-lint-ignore-file // Copyright Joyent and Node contributors. All rights reserved. MIT license. // Taken from Node 18.12.1 // This file is automatically generated by `tools/node_compat/setup.ts`. Do not modify this file manually. 'use strict'; const common = require('../common'); const { Readable, Writable } = require('stream'); // Tests that calling .unpipe() un-blocks a stream that is paused because // it is waiting on the writable side to finish a write(). const rs = new Readable({ highWaterMark: 1, // That this gets called at least 20 times is the real test here. read: common.mustCallAtLeast(() => rs.push('foo'), 20) }); const ws = new Writable({ highWaterMark: 1, write: common.mustCall(() => { // Ignore the callback, this write() simply never finishes. setImmediate(() => rs.unpipe(ws)); }) }); let chunks = 0; rs.on('data', common.mustCallAtLeast(() => { chunks++; if (chunks >= 20) rs.pause(); // Finish this test. })); rs.pipe(ws);