%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
'use strict'; const common = require('../common'); const { Readable, PassThrough } = require('stream'); function test(r) { const wrapper = new Readable({ read: () => { let data = r.read(); if (data) { wrapper.push(data); return; } r.once('readable', function() { data = r.read(); if (data) { wrapper.push(data); } // else: the end event should fire }); }, }); r.once('end', function() { wrapper.push(null); }); wrapper.resume(); wrapper.once('end', common.mustCall()); } { const source = new Readable({ read: () => {} }); source.push('foo'); source.push('bar'); source.push(null); const pt = source.pipe(new PassThrough()); test(pt); } { // This is the underlying cause of the above test case. const pushChunks = ['foo', 'bar']; const r = new Readable({ read: () => { const chunk = pushChunks.shift(); if (chunk) { // synchronous call r.push(chunk); } else { // asynchronous call process.nextTick(() => r.push(null)); } }, }); test(r); }