Clicking start will schedule two self-restarting functions:
runSetTimeout uses setTimeout(fn, 0) for queueing itself
runQ uses an immediately-fulfilled Q promise for queueing itself
Q uses setImmediate if available, MessageChannel as a fallback, and setTimeout(fn,0) as a final backup
Results:
In IE10 Mobile, after a few seconds runQ is never called unless both setImmediate and MessageChannel have been disabled
In IE10 Desktop, unless you disable both setImmediate and MessageChannel, after about 30s (once DOM manipulation has become slow enough) runQ is never called if you either: a) move the mouse around, or b) place the mouse on top of the changing log lines