%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 stream = require('stream'); // Ensure consistency between the finish event when using cork() // and writev and when not using them { const writable = new stream.Writable(); writable._write = (chunks, encoding, cb) => { cb(new Error('write test error')); }; writable.on('finish', common.mustNotCall()); writable.on('prefinish', common.mustNotCall()); writable.on('error', common.mustCall((er) => { assert.strictEqual(er.message, 'write test error'); })); writable.end('test'); } { const writable = new stream.Writable(); writable._write = (chunks, encoding, cb) => { setImmediate(cb, new Error('write test error')); }; writable.on('finish', common.mustNotCall()); writable.on('prefinish', common.mustNotCall()); writable.on('error', common.mustCall((er) => { assert.strictEqual(er.message, 'write test error'); })); writable.end('test'); } { const writable = new stream.Writable(); writable._write = (chunks, encoding, cb) => { cb(new Error('write test error')); }; writable._writev = (chunks, cb) => { cb(new Error('writev test error')); }; writable.on('finish', common.mustNotCall()); writable.on('prefinish', common.mustNotCall()); writable.on('error', common.mustCall((er) => { assert.strictEqual(er.message, 'writev test error'); })); writable.cork(); writable.write('test'); setImmediate(function() { writable.end('test'); }); } { const writable = new stream.Writable(); writable._write = (chunks, encoding, cb) => { setImmediate(cb, new Error('write test error')); }; writable._writev = (chunks, cb) => { setImmediate(cb, new Error('writev test error')); }; writable.on('finish', common.mustNotCall()); writable.on('prefinish', common.mustNotCall()); writable.on('error', common.mustCall((er) => { assert.strictEqual(er.message, 'writev test error'); })); writable.cork(); writable.write('test'); setImmediate(function() { writable.end('test'); }); } // Regression test for // https://github.com/nodejs/node/issues/13812 { const rs = new stream.Readable(); rs.push('ok'); rs.push(null); rs._read = () => {}; const ws = new stream.Writable(); ws.on('finish', common.mustNotCall()); ws.on('error', common.mustCall()); ws._write = (chunk, encoding, done) => { setImmediate(done, new Error()); }; rs.pipe(ws); } { const rs = new stream.Readable(); rs.push('ok'); rs.push(null); rs._read = () => {}; const ws = new stream.Writable(); ws.on('finish', common.mustNotCall()); ws.on('error', common.mustCall()); ws._write = (chunk, encoding, done) => { done(new Error()); }; rs.pipe(ws); } { const w = new stream.Writable(); w._write = (chunk, encoding, cb) => { process.nextTick(cb); }; w.on('error', common.mustCall()); w.on('finish', common.mustNotCall()); w.on('prefinish', () => { w.write("shouldn't write in prefinish listener"); }); w.end(); } { const w = new stream.Writable(); w._write = (chunk, encoding, cb) => { process.nextTick(cb); }; w.on('error', common.mustCall()); w.on('finish', () => { w.write("shouldn't write in finish listener"); }); w.end(); }