// beforeExit may schedule more work; exit runs once with process.exitCode. let rounds = 0; process.on("beforeExit", (code) => { console.log(`beforeExit ${code} ${rounds}`); if (rounds++ === 0) { setTimeout(() => { console.log("one more"); process.exitCode = 3; }, 5); } }); process.on("exit", (code) => console.log(`exit ${code} ${process.exitCode}`)); console.log("main");