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) =>