| /* eslint-disable node-core/require-common-first, require-yield */ |
| 'use strict'; |
| const { pipeline } = require('node:stream/promises'); |
| { |
| // Ensure that async iterators can act as readable and writable streams |
| async function* myCustomReadable() { |
| yield 'Hello'; |
| yield 'World'; |
| } |
| |
| const messages = []; |
| async function* myCustomWritable(stream) { |
| for await (const chunk of stream) { |
| messages.push(chunk); |
| } |
| } |
| |
| (async () => { |
| await pipeline( |
| myCustomReadable, |
| myCustomWritable, |
| ); |
| // Importing here to avoid initializing streams |
| require('assert').deepStrictEqual(messages, ['Hello', 'World']); |
| })() |
| .then(require('../common').mustCall()); |
| } |