setTimeout() can be quite slow, if we want to do it this way we should check for requestAnimationFrame() and postMessage() and do it with those instead (as a requestAnimationFrame() abstraction, perhaps).