This repository was archived by the owner on Apr 22, 2023. It is now read-only.

Description
Test script:
;(function () {
var gen = +(process.argv[2] || 0);
var maxGen = 5;
if (gen === maxGen) {
console.log("hit maxGen, exiting", maxGen);
return;
}
var ch = require("child_process");
var cp = ch.spawn("node", [__filename, gen + 1]);
console.log("gen=%d", gen);
var timer = setTimeout(function () {
throw new Error("timeout! gen="+gen);
}, 1000);
cp.on("exit", function (code) {
console.error("exit %d from gen %d", code, gen + 1);
clearTimeout(timer);
})
cp.stdout.pipe(process.stdout);
cp.stderr.pipe(process.stderr);
})();
Output:
$ node no-exit.js
gen=0
gen=1
gen=2
gen=3
gen=4
hit maxGen, exiting 5
exit 0 from gen 5
exit 0 from gen 4
/Users/isaacs/dev-src/js/semver/no-exit.js:19
throw new Error("timeout! gen="+gen);
^
Error: timeout! gen=0
at Object._onTimeout (/Users/isaacs/dev-src/js/semver/no-exit.js:19:9)
at Timer.ontimeout (timers_uv.js:84:39)