I found this issue working with Deno (v1.23.3) and another library that has a transitive dependency on setimmediate. That bug report is here.
The bug is that if setimmediate is referenced in a Deno script, the deno script will never finish the process normally. Instead, Deno.exit() (similar to NodeJS process.exit()) must be called.
To reproduce:
- Have Deno installed, or run it from a Docker container (eg.
docker run -it --init denoland/deno:ubuntu sh)
- Create a
test.ts file with the following contents:
import * as setImmediate from 'https://raw.githubusercontent.com/YuzuJS/setImmediate/master/setImmediate.js';
console.log('End of program', setImmediate);
- Run using
deno run test.ts
Expected:
- "End of program Module {}" is logged to console
- The Deno process exits.
Observed:
- "End of program Module {}" is logged to console
- The Deno process never exits. It continues to idle.
I'm pretty sure this is caused by the opening of a MessageChannel and setting a message listener for one of the ports; https://github.com/YuzuJS/setImmediate/blob/master/setImmediate.js#L126
I found this issue working with Deno (v1.23.3) and another library that has a transitive dependency on
setimmediate. That bug report is here.The bug is that if
setimmediateis referenced in a Deno script, the deno script will never finish the process normally. Instead,Deno.exit()(similar to NodeJSprocess.exit()) must be called.To reproduce:
docker run -it --init denoland/deno:ubuntu sh)test.tsfile with the following contents:deno run test.tsExpected:
Observed:
I'm pretty sure this is caused by the opening of a
MessageChanneland setting a message listener for one of the ports; https://github.com/YuzuJS/setImmediate/blob/master/setImmediate.js#L126