Reputation: 1034
Consider this:
(async function () {
const arr = [];
await new Promise(r => arr.push(r));
console.log("done")
})();
The scripts terminates at the await
and the log is never printed to sdout, I don't understand why
Upvotes: 2
Views: 500
Reputation: 276306
Nothing is wrong with your code. That's just the model of Node. If there is no pending I/O pending promises don't prevent Node from exiting.
You can schedule some I/O if you want to stop Node from exiting but pending promises don't actually prevent Node from exiting.
I'm not saying I agree or like the behavior but that's what we currently do 🤷
Edit: found the bug report/discussion in the issue tracker.
Upvotes: 4