The ThreadedDisplayRefreshMonitor can take time (layout, ...) and has an higher priority than the main SharedTimer. This means that animations could prevent the timers from executing, if the JS relies on this to stop the animation the page appears to be stuck.
Pull request: https://github.com/WebKit/WebKit/pull/18491