Skip to content

Commit debd387

Browse files
committed
fixup: don't read more if failed
1 parent aabfd75 commit debd387

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

lib/internal/streams/operators.js

+14-8
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ module.exports.map = function map(stream, fn, options) {
2020
const queue = [];
2121

2222
let reading = false;
23+
let failed = false;
2324

2425
// TODO: What about hwm? This will cause some unnecessary buffering.
2526
const ret = new Readable({
@@ -70,6 +71,7 @@ module.exports.map = function map(stream, fn, options) {
7071
try {
7172
return [null, await val];
7273
} catch (err) {
74+
failed = true;
7375
return [err, null];
7476
}
7577
}
@@ -82,21 +84,25 @@ module.exports.map = function map(stream, fn, options) {
8284
}
8385

8486
function pump () {
85-
while (queue.length < concurrency) {
86-
let val = stream.read();
87-
if (val === null) {
88-
return;
89-
}
90-
try {
87+
if (failed) {
88+
return;
89+
}
90+
try {
91+
while (queue.length < concurrency) {
92+
let val = stream.read();
93+
if (val === null) {
94+
return;
95+
}
9196
val = fn(val, { signal });
9297
if (val && typeof val.then === 'function') {
9398
enqueue(wrap(val));
9499
} else {
95100
enqueue([null, val]);
96101
}
97-
} catch (err) {
98-
enqueue([err, null]);
99102
}
103+
} catch (err) {
104+
failed = true;
105+
enqueue([err, null]);
100106
}
101107
}
102108

0 commit comments

Comments
 (0)