8000
We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 4b04bf8 commit f263659Copy full SHA for f263659
lib/internal/streams/end-of-stream.js
@@ -47,9 +47,9 @@ function eos(stream, opts, callback) {
47
48
callback = once(callback);
49
50
- let readable = opts.readable ||
+ const readable = opts.readable ||
51
(opts.readable !== false && isReadable(stream));
52
- let writable = opts.writable ||
+ const writable = opts.writable ||
53
(opts.writable !== false && isWritable(stream));
54
55
const onlegacyfinish = () => {
@@ -59,35 +59,31 @@ function eos(stream, opts, callback) {
59
let writableFinished = stream.writableFinished ||
60
(stream._writableState && stream._writableState.finished);
61
const onfinish = () => {
62
- writable = false;
63
writableFinished = true;
64
- if (!readable) callback.call(stream);
+ if (!readable || readableEnded) callback.call(stream);
65
};
66
67
let readableEnded = stream.readableEnded ||
68
(stream._readableState && stream._readableState.endEmitted);
69
const onend = () => {
70
- readable = false;
71
readableEnded = true;
72
- if (!writable) callback.call(stream);
+ if (!writable || writableFinished) callback.call(stream);
73
74
75
const onerror = (err) => {
76
callback.call(stream, err);
77
78
79
const onclose = () => {
80
- let err;
81
if (readable && !readableEnded) {
82
if (!stream._readableState || !stream._readableState.ended)
83
- err = new ERR_STREAM_PREMATURE_CLOSE();
84
- return callback.call(stream, err);
+ return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE());
85
}
86
if (writable && !writableFinished) {
87
if (!isWritableFinished(stream))
88
89
90
+ callback.call(stream);
91
92
93
const onrequest = () => {
test/parallel/test-stream-finished.js
@@ -181,7 +181,7 @@ const { promisify } = require('util');
181
const streamLike = new EE();
182
streamLike.readableEnded = true;
183
streamLike.readable = true;
184
- finished(streamLike, common.mustCall);
+ finished(streamLike, common.mustCall());
185
streamLike.emit('close');
186
187