import { pipeline } from 'node:stream/promises'; import { Transform } from 'node:stream'; import { createReadStream, createWriteStream } from 'node:fs'; import { createGzip } from 'node:zlib'; const upper = new Transform({ transform(chunk, _enc, cb) { cb(null, chunk.toString().toUpperCase()); }, }); try { await pipeline( createReadStream('in.txt'), upper, createGzip(), createWriteStream('out.txt.gz'), ); console.log('done'); } catch (err) { console.error('stream failed:', err); // reachable, unlike with .pipe() }