Skip to content

Commit 353e92e

Browse files
refactor: code
1 parent 4ad1a8d commit 353e92e

1 file changed

Lines changed: 21 additions & 8 deletions

File tree

src/index.js

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -401,8 +401,6 @@ wdm.hapiWrapper = hapiWrapper;
401401
* @returns {(ctx: EXPECTED_ANY, next: EXPECTED_FUNCTION) => Promise<void> | void} kow wrapper
402402
*/
403403
function koaWrapper(compiler, options, usePlugin) {
404-
const { finished } = require("node:stream");
405-
406404
const devMiddleware = wdm(compiler, options, usePlugin);
407405

408406
/**
@@ -445,17 +443,32 @@ function koaWrapper(compiler, options, usePlugin) {
445443
* @param {import("fs").ReadStream} stream readable stream
446444
*/
447445
res.stream = (stream) => {
448-
ctx.body = stream;
446+
let resolved = false;
449447

450-
finished(stream, (err) => {
451-
isFinished = true;
448+
/**
449+
* @param {Error=} err error
450+
*/
451+
const onEvent = (err) => {
452+
if (resolved) return;
453+
resolved = true;
454+
455+
stream.removeListener("error", onEvent);
456+
stream.removeListener("readable", onEvent);
452457

453458
if (err) {
454459
reject(err);
455-
} else {
456-
resolve();
460+
return;
457461
}
458-
});
462+
463+
ctx.body = stream;
464+
isFinished = true;
465+
resolve();
466+
};
467+
468+
stream.once("error", onEvent);
469+
stream.once("readable", onEvent);
470+
// Empty stream
471+
stream.once("end", onEvent);
459472
};
460473
/**
461474
* @param {string | Buffer} data data

0 commit comments

Comments
 (0)