@@ -1,10 +1,28 @@
11export const subscribe = handler => () => {
2− addEventListener("message", (event) => {
3− handler(event.data)();
4− })
5−}
2+ const listener = event => handler(event.data)();
3+ addEventListener("message", listener);
4+ return () => removeEventListener("message", listener);
5+};
66
77export const quit = () => close()
88
99export const postMessageToBoss = data => () => postMessage(data)
1010
11+export const onFailure = handler => () => {
12+ const onError = event => {
13+ event.preventDefault();
14+ handler(event.message || "Worker execution failed")();
15+ };
16+ const onRejection = event => {
17+ event.preventDefault();
18+ const reason = event.reason;
19+ handler(reason instanceof Error ? reason.message : String(reason))();
20+ };
21+ addEventListener("error", onError);
22+ addEventListener("unhandledrejection", onRejection);
23+ return () => {
24+ removeEventListener("error", onError);
25+ removeEventListener("unhandledrejection", onRejection);
26+ };
27+};
28+