mirror of
https://github.com/denoland/deno.git
synced 2024-10-31 09:14:20 -04:00
22f951aa67
Fixes panic occurring in worker when "self.close()" is called at the top level, ie. worker shuts down while module evaluation promise hasn't yet resolved.
33 lines
762 B
JavaScript
33 lines
762 B
JavaScript
const fixtureFile = await Deno.makeTempFile();
|
|
let prefix = "file://";
|
|
if (Deno.build.os == "windows") {
|
|
prefix += "/";
|
|
}
|
|
const fixtureUrl = new URL(`${prefix}${fixtureFile}`);
|
|
let resolve;
|
|
|
|
let p = new Promise((res) => resolve = res);
|
|
|
|
await Deno.writeTextFile(fixtureUrl, `self.postMessage("hello");\n`);
|
|
|
|
const workerA = new Worker(fixtureUrl.href, { type: "module" });
|
|
workerA.onmessage = (msg) => {
|
|
console.log(msg.data);
|
|
resolve();
|
|
};
|
|
|
|
await p;
|
|
workerA.terminate();
|
|
|
|
p = new Promise((res) => resolve = res);
|
|
|
|
await Deno.writeTextFile(fixtureUrl, `self.postMessage("goodbye");\n`);
|
|
|
|
const workerB = new Worker(fixtureUrl.href, { type: "module" });
|
|
workerB.onmessage = (msg) => {
|
|
console.log(msg.data);
|
|
resolve();
|
|
};
|
|
|
|
await p;
|
|
workerB.terminate();
|