Create isolated event listeners

This commit is contained in:
Peter Stockings
2025-07-26 21:34:33 +10:00
parent 4300e08885
commit 748771dc33

View File

@@ -72,12 +72,21 @@ async function handler(req: Request): Promise<Response> {
} = body; } = body;
const executionPromise = new Promise((resolve, reject) => { const executionPromise = new Promise((resolve, reject) => {
availableWorker.worker.onmessage = (e) => { const messageHandler = (e) => {
resolve(e.data); resolve(e.data);
cleanup();
}; };
availableWorker.worker.onerror = (e) => { const errorHandler = (e) => {
reject(new Error(`Worker error: ${e.message}`)); 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) => const timeoutPromise = new Promise((_, reject) =>