Drive the JS event loop to quiescence: repeatedly run pending script / event
tasks, drain microtasks, apply the batched DOM ops, re-render, and run one
timer + requestAnimationFrame callback per iteration — looping until nothing
is left to do (no pending tasks and no timer/rAF fired) or max_iterations
is hit. The layout bridge is refreshed each iteration so timer / rAF
callbacks measure the geometry of the latest render (setState -> re-render,
effects, and animation steps run without an external pump).
Returns true when the loop settled, false when it stopped at the
iteration cap (a runaway timer chain). A navigation triggered mid-loop ends
the loop and reports settled.