Skip to content

Commit fe7ca08

Browse files
authored
stream: throw invalid arg type from End Of Stream
PR-URL: #41766 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: Mestery <mestery@protonmail.com> Reviewed-By: Darshan Sen <raisinten@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Mary Marchini <oss@mmarchini.me> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de>
1 parent bde184e commit fe7ca08

File tree

3 files changed

+28
-2
lines changed

3 files changed

+28
-2
lines changed

lib/internal/streams/end-of-stream.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ const {
88
codes,
99
} = require('internal/errors');
1010
const {
11+
ERR_INVALID_ARG_TYPE,
1112
ERR_STREAM_PREMATURE_CLOSE
1213
} = codes;
1314
const { once } = require('internal/util');
@@ -58,7 +59,7 @@ function eos(stream, options, callback) {
5859

5960
if (!isNodeStream(stream)) {
6061
// TODO: Webstreams.
61-
// TODO: Throw INVALID_ARG_TYPE.
62+
throw new ERR_INVALID_ARG_TYPE('stream', 'Stream', stream);
6263
}
6364

6465
const wState = stream._writableState;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
'use strict';
2+
require('../common');
3+
const assert = require('assert');
4+
5+
const { Duplex, finished } = require('stream');
6+
7+
assert.throws(
8+
() => {
9+
// Passing empty object to mock invalid stream
10+
// should throw error
11+
finished({}, () => {});
12+
},
13+
{ code: 'ERR_INVALID_ARG_TYPE' }
14+
);
15+
16+
const streamObj = new Duplex();
17+
streamObj.end();
18+
// Below code should not throw any errors as the
19+
// streamObj is `Stream`
20+
finished(streamObj, () => {});

test/parallel/test-stream-finished.js

+6-1
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,12 @@ const http = require('http');
260260
const streamLike = new EE();
261261
streamLike.readableEnded = true;
262262
streamLike.readable = true;
263-
finished(streamLike, common.mustCall());
263+
assert.throws(
264+
() => {
265+
finished(streamLike, () => {});
266+
},
267+
{ code: 'ERR_INVALID_ARG_TYPE' }
268+
);
264269
streamLike.emit('close');
265270
}
266271

0 commit comments

Comments
 (0)