With async iterators, we can use synchronous-looking code to consume readable streams. There is no equivalent for writable streams in Node core. Example use case: ```js const fs = require('fs'); const zlib = require('zlib'); (async () => { const read = fs.createReadStream('data.txt.gz'); const gunzip = zlib.createGunzip(); const write = fs.createWriteStream('data.txt'); await read.pipe(gunzip).pipe(write); })(); ``` This would resolve when `write` ends or reject if an error occurs. Prior art: - https://github.com/bendrucker/stream-to-promise - https://github.com/epeli/node-promisepipe - https://github.com/dex4er/js-promise-writable /cc @nodejs/streams @mcollina