# duplexer3 **Repository Path**: mirrors_sindresorhus/duplexer3 ## Basic Information - **Project Name**: duplexer3 - **Description**: Modern version of duplexer2 - **Primary Language**: Unknown - **License**: BSD-3-Clause - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-07-08 - **Last Updated**: 2026-05-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # duplexer3 > Modern version of `duplexer2` ## Install ```sh npm install duplexer3 ``` ## Usage ```js import stream from 'node:stream'; import duplexer from 'duplexer3'; const writable = new stream.Writable({objectMode: true}); const readable = new stream.Readable({objectMode: true}); writable._write = function (input, encoding, done) { if (readable.push(input)) { done(); } else { readable.once('drain', done); } }; readable._read = function () { // Noop }; // Simulate the readable thing closing after a bit writable.once('finish', () => { setTimeout(() => { readable.push(null); }, 500); }); const duplex = duplexer3(writable, readable); duplex.on('data', data => { console.log('got data', JSON.stringify(data)); }); duplex.on('finish', () => { console.log('got finish event'); }); duplex.on('end', () => { console.log('got end event'); }); duplex.write('oh, hi there', () => { console.log('finished writing'); }); duplex.end(() => { console.log('finished ending'); }); ``` ``` got data 'oh, hi there' finished writing got finish event finished ending got end event ``` ## API ### duplexer(options?, writableStream, readableStream) #### options Type: `object` ##### bubbleErrors Type: `boolean`\ Default: `true` Whether to bubble errors from the underlying readable/writable streams.