summaryrefslogtreecommitdiff
path: root/test/parallel/test-readable-from.js
diff options
context:
space:
mode:
authorRobert Nagy <ronagy@icloud.com>2020-05-01 23:02:42 +0200
committerRobert Nagy <ronagy@icloud.com>2020-05-06 22:39:33 +0200
commit8607f9ec5c2a488f5df7f9eb3e5f5c7dfa0b492a (patch)
tree2051a5b207530fbf95b51a9d7cfca1be1e90dff0 /test/parallel/test-readable-from.js
parent3662b0c2c75b670599c363be8322064a3359e432 (diff)
downloadnode-new-8607f9ec5c2a488f5df7f9eb3e5f5c7dfa0b492a.tar.gz
stream: make from read one at a time
Currently from will eagerly buffer up items which means that errors are also eagerly encountered and items which are buffer when an error occurs will be discarded, which is inconsistent with how generators work. Fixes: https://github.com/nodejs/node/issues/29428 PR-URL: https://github.com/nodejs/node/pull/33201 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Diffstat (limited to 'test/parallel/test-readable-from.js')
-rw-r--r--test/parallel/test-readable-from.js26
1 files changed, 25 insertions, 1 deletions
diff --git a/test/parallel/test-readable-from.js b/test/parallel/test-readable-from.js
index 6cc9216a30..94bc2c1ae4 100644
--- a/test/parallel/test-readable-from.js
+++ b/test/parallel/test-readable-from.js
@@ -159,6 +159,29 @@ async function asTransformStream() {
}
}
+async function endWithError() {
+ async function* generate() {
+ yield 1;
+ yield 2;
+ yield Promise.reject('Boum');
+ }
+
+ const stream = Readable.from(generate());
+
+ const expected = [1, 2];
+
+ try {
+ for await (const chunk of stream) {
+ strictEqual(chunk, expected.shift());
+ }
+ throw new Error();
+ } catch (err) {
+ strictEqual(expected.length, 0);
+ strictEqual(err, 'Boum');
+ }
+}
+
+
Promise.all([
toReadableBasicSupport(),
toReadableSyncIterator(),
@@ -168,5 +191,6 @@ Promise.all([
toReadableOnData(),
toReadableOnDataNonObject(),
destroysTheStreamWhenThrowing(),
- asTransformStream()
+ asTransformStream(),
+ endWithError()
]).then(mustCall());