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