andywer / threads.js

🧵 Make web workers & worker threads as simple as a function call.
https://threads.js.org/
MIT License
3.04k stars 161 forks source link

pool.terminate hangs when "Timeout: Did not receive an init message from worker" first #461

Open kellyselden opened 1 year ago

kellyselden commented 1 year ago

I have some code like:

let err;
try {
  await pool.settled();
} catch (_err) {
  err = _err;
} finally {
  await pool.terminate(!!err);
}

It works when there are no errors, and when there is an "expected" error in one of the threads, but when the error is "Timeout: Did not receive an init message from worker ...", calling terminate hangs. I have the workaround:

  if (!err?.message?.startsWith('Timeout: Did not receive an init message from worker')) {
    await pool.terminate(!!err);
  }

which works, but it seems like an early exit inside terminate would be appropriate for a case like this. Thoughts?