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