Skip to content

Commit 6e2d5af

Browse files
range3BridgeAR
authored andcommitted
fs: fix missing 'error' event in (Read|Write)Stream#destroy
fs.ReadStream / fs.WriteStream destroy([error]) function should emit 'error' event if `error` is set. PR-URL: #19735 Fixes: #19727 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
1 parent 9c06770 commit 6e2d5af

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

lib/fs.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2128,7 +2128,7 @@ ReadStream.prototype._destroy = function(err, cb) {
21282128
return;
21292129
}
21302130

2131-
closeFsStream(this, cb);
2131+
closeFsStream(this, cb, err);
21322132
this.fd = null;
21332133
};
21342134

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
'use strict';
2+
const common = require('../common');
3+
const assert = require('assert');
4+
const fs = require('fs');
5+
6+
const tmpdir = require('../common/tmpdir');
7+
tmpdir.refresh();
8+
9+
test(fs.createReadStream(__filename));
10+
test(fs.createWriteStream(`${tmpdir.path}/dummy`));
11+
12+
function test(stream) {
13+
const err = new Error('DESTROYED');
14+
stream.on('open', function() {
15+
stream.destroy(err);
16+
});
17+
stream.on('error', common.mustCall(function(err_) {
18+
assert.strictEqual(err_, err);
19+
}));
20+
}

0 commit comments

Comments
 (0)