MCPcopy Create free account
hub / github.com/RtlZeroMemory/Rezi / waitFor

Function waitFor

packages/node/src/__tests__/worker_integration.test.ts:77–108  ·  view source on GitHub ↗
(worker: Worker, pred: (m: Msg) => boolean)

Source from the content-addressed store, hash-verified

75}
76
77function waitFor(worker: Worker, pred: (m: Msg) => boolean): Promise<Msg> {
78 return new Promise((resolve, reject) => {
79 const onMsg = (m: unknown) => {
80 if (typeof m !== "object" || m === null) return;
81 const type = (m as { type?: unknown }).type;
82 if (typeof type !== "string") return;
83 const msg = m as Msg;
84 if (msg.type === "fatal") {
85 cleanup();
86 reject(new Error(`worker fatal: ${msg.where} (${msg.code}): ${msg.detail}`));
87 return;
88 }
89 if (pred(msg)) {
90 cleanup();
91 resolve(msg);
92 }
93 };
94
95 const onExit = (code: number) => {
96 cleanup();
97 reject(new Error(`worker exited before expected message: code=${String(code)}`));
98 };
99
100 const cleanup = () => {
101 worker.off("message", onMsg);
102 worker.off("exit", onExit);
103 };
104
105 worker.on("message", onMsg);
106 worker.on("exit", onExit);
107 });
108}
109
110function post(worker: Worker, msg: MainToWorkerMessage, transfer?: readonly ArrayBuffer[]): void {
111 if (transfer !== undefined) {

Callers 2

shutdownAndWaitForExitFunction · 0.70

Calls 1

onMethod · 0.65

Tested by

no test coverage detected