%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 assert = require('assert'); const { Readable } = require('stream'); const readline = require('readline'); const CONTENT = 'content'; const TOTAL_LINES = 18; (async () => { const readable = new Readable({ read() {} }); readable.push(`${CONTENT}\n`.repeat(TOTAL_LINES)); const rli = readline.createInterface({ input: readable, crlfDelay: Infinity }); const it = rli[Symbol.asyncIterator](); const highWaterMark = it.stream.readableHighWaterMark; // For this test to work, we have to queue up more than the number of // highWaterMark items in rli. Make sure that is the case. assert(TOTAL_LINES > highWaterMark); let iterations = 0; let readableEnded = false; for await (const line of it) { assert.strictEqual(readableEnded, false); assert.strictEqual(line, CONTENT); const expectedPaused = TOTAL_LINES - iterations > highWaterMark; assert.strictEqual(readable.isPaused(), expectedPaused); iterations += 1; // We have to end the input stream asynchronously for back pressure to work. // Only end when we have reached the final line. if (iterations === TOTAL_LINES) { readable.push(null); readableEnded = true; } } assert.strictEqual(iterations, TOTAL_LINES); })().then(common.mustCall());