Skip to content

Commit 7adf8ec

Browse files
committed
fix: fixed potential promise rejection leaks
1 parent 152cb84 commit 7adf8ec

File tree

3 files changed

+10
-0
lines changed

3 files changed

+10
-0
lines changed

src/QUICConnection.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,8 @@ class QUICConnection {
395395
resolveP: resolveSecureEstablishedP,
396396
rejectP: rejectSecureEstablishedP,
397397
} = utils.promise();
398+
// Prevent promise rejection leak
399+
secureEstablishedP.catch(() => {});
398400
this.secureEstablishedP = secureEstablishedP;
399401
this.resolveSecureEstablishedP = () => {
400402
// This is an idempotent mutation
@@ -517,6 +519,8 @@ class QUICConnection {
517519
}
518520
ctx.signal.throwIfAborted();
519521
const { p: abortP, rejectP: rejectAbortP } = utils.promise<never>();
522+
// Prevent promise rejection leak
523+
void abortP.catch(() => {});
520524
const abortHandler = () => {
521525
rejectAbortP(ctx.signal.reason);
522526
};

src/QUICSocket.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,8 @@ class QUICSocket {
269269
this.socketClose = utils.promisify(this.socket.close).bind(this.socket);
270270
this.socketSend = utils.promisify(this.socket.send).bind(this.socket);
271271
const { p: errorP, rejectP: rejectErrorP } = utils.promise();
272+
// Prevent promise rejection leak
273+
void errorP.catch(() => {});
272274
this.socket.once('error', rejectErrorP);
273275
// This resolves DNS via `getaddrinfo` under the hood.
274276
// It which respects the hosts file.

src/QUICStream.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -562,6 +562,8 @@ class QUICStream implements ReadableWritablePair<Uint8Array, Uint8Array> {
562562
resolveP: resolveReadableP,
563563
rejectP: rejectReadableP,
564564
} = utils.promise();
565+
// Prevent promise rejection leak
566+
void readableP.catch(() => {});
565567
this.resolveReadableP = resolveReadableP;
566568
this.rejectReadableP = rejectReadableP;
567569
try {
@@ -704,6 +706,8 @@ class QUICStream implements ReadableWritablePair<Uint8Array, Uint8Array> {
704706
resolveP: resolveWritableP,
705707
rejectP: rejectWritableP,
706708
} = utils.promise();
709+
// Prevent promise rejection leak
710+
void writableP.catch(() => {});
707711
this.resolveWritableP = resolveWritableP;
708712
this.rejectWritableP = rejectWritableP;
709713
await writableP;

0 commit comments

Comments
 (0)