Skip to content

Commit 16d8cd5

Browse files
mcollinarichardlau
authored andcommitted
stream: do not defer construction by one microtick
Fixes: nodejs#51993 PR-URL: nodejs#52005 Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: Michaël Zasso <targos@protonmail.com>
1 parent 905c48f commit 16d8cd5

File tree

2 files changed

+29
-5
lines changed

2 files changed

+29
-5
lines changed

lib/internal/streams/destroy.js

+1-5
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ function constructNT(stream) {
291291
} else if (err) {
292292
errorOrDestroy(stream, err, true);
293293
} else {
294-
process.nextTick(emitConstructNT, stream);
294+
stream.emit(kConstruct);
295295
}
296296
}
297297

@@ -304,10 +304,6 @@ function constructNT(stream) {
304304
}
305305
}
306306

307-
function emitConstructNT(stream) {
308-
stream.emit(kConstruct);
309-
}
310-
311307
function isRequest(stream) {
312308
return stream?.setHeader && typeof stream.abort === 'function';
313309
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
'use strict';
2+
3+
const common = require('../common');
4+
const tmpdir = require('../common/tmpdir');
5+
const { strictEqual } = require('assert');
6+
const fs = require('fs');
7+
8+
// Regression test for https://github.com/nodejs/node/issues/51993
9+
10+
tmpdir.refresh();
11+
12+
const file = tmpdir.resolve('test-fs-writestream-open-write.txt');
13+
14+
const w = fs.createWriteStream(file);
15+
16+
w.on('open', common.mustCall(() => {
17+
w.write('hello');
18+
19+
process.nextTick(() => {
20+
w.write('world');
21+
w.end();
22+
});
23+
}));
24+
25+
w.on('close', common.mustCall(() => {
26+
strictEqual(fs.readFileSync(file, 'utf8'), 'helloworld');
27+
fs.unlinkSync(file);
28+
}));

0 commit comments

Comments
 (0)