Skip to content

Commit 3049ea5

Browse files
refactor: safe stream for hono
1 parent f991e2a commit 3049ea5

1 file changed

Lines changed: 27 additions & 3 deletions

File tree

src/index.js

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -639,10 +639,34 @@ function honoWrapper(compiler, options, usePlugin) {
639639
* @param {import("fs").ReadStream} stream readable stream
640640
*/
641641
res.stream = (stream) => {
642-
body = stream;
642+
let isResolved = false;
643643

644-
isFinished = true;
645-
resolve();
644+
/**
645+
* @param {Error=} err err
646+
*/
647+
const done = (err) => {
648+
if (isResolved) return;
649+
isResolved = true;
650+
651+
stream.removeListener("error", done);
652+
stream.removeListener("readable", done);
653+
stream.removeListener("end", done);
654+
655+
if (err) {
656+
stream.destroy();
657+
reject(err);
658+
return;
659+
}
660+
661+
body = stream;
662+
isFinished = true;
663+
resolve();
664+
};
665+
666+
stream.once("error", done);
667+
stream.once("readable", done);
668+
// Empty stream
669+
stream.once("end", done);
646670
};
647671

648672
/**

0 commit comments

Comments
 (0)