deno/tests/testdata/workers/racy_worker.js

26 lines
653 B
JavaScript
Raw Normal View History

// See issue for details
// https://github.com/denoland/deno/issues/4080
//
// After first received message, this worker schedules
// [assert(), close(), assert()] ops on the same turn of microtask queue
// All tasks after close should not make it
onmessage = async function () {
let stage = 0;
await new Promise((_) => {
setTimeout(() => {
if (stage !== 0) throw "Unexpected stage";
stage = 1;
}, 50);
setTimeout(() => {
if (stage !== 1) throw "Unexpected stage";
stage = 2;
postMessage("DONE");
close();
}, 50);
setTimeout(() => {
throw "This should not be run";
}, 50);
});
};