Do not idle in the event loop if there are pending immediate tasks #17901
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Fixes #17725. The presence of a
setInterval
timer would make us idle inus_loop_run_bun_tick
on every run of the event loop for a dozen ms or so, but that's not a good idea when we have immediate tasks to run. This PR makes us skip the timeout if there are immediate tasks, similar to what we already do if there is a short timer (in terms of the effect on idling, immediates are like 0ms timers).Todo:
How did you verify your code works?
Ran the
node:timers
tests, and extended our own tests to cover a use case like #17725.