From 748771dc33f5dfebfa2b07b7f552645f8f058996 Mon Sep 17 00:00:00 2001 From: Peter Stockings Date: Sat, 26 Jul 2025 21:34:33 +1000 Subject: [PATCH] Create isolated event listeners --- deno_server.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/deno_server.ts b/deno_server.ts index 6350edf..af14ad3 100644 --- a/deno_server.ts +++ b/deno_server.ts @@ -72,12 +72,21 @@ async function handler(req: Request): Promise { } = body; const executionPromise = new Promise((resolve, reject) => { - availableWorker.worker.onmessage = (e) => { + const messageHandler = (e) => { resolve(e.data); + cleanup(); }; - availableWorker.worker.onerror = (e) => { + const errorHandler = (e) => { reject(new Error(`Worker error: ${e.message}`)); + cleanup(); }; + const cleanup = () => { + availableWorker.worker.removeEventListener("message", messageHandler); + availableWorker.worker.removeEventListener("error", errorHandler); + }; + + availableWorker.worker.addEventListener("message", messageHandler); + availableWorker.worker.addEventListener("error", errorHandler); }); const timeoutPromise = new Promise((_, reject) =>