0
0
mirror of https://github.com/nodejs/node.git synced 2024-11-21 21:19:50 +01:00
nodejs/test/parallel/test-stream3-pipeline-async-iterator.js
Erick Wendel 5d0946ad0e
stream: fix readable stream as async iterator function
Since v19.2 it's not possible to use readableStreams
as async iterators (confirmed bug).
This patch fixes the problem by reading the Stream.Duplex property
from 'streams/duplex' instead of 'streams/legacy' module

Fixes: https://github.com/nodejs/node/issues/46141
PR-URL: https://github.com/nodejs/node/pull/46147
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Robert Nagy <ronagy@icloud.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
2023-01-20 12:37:52 +00:00

28 lines
704 B
JavaScript

/* 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());
}