RAF fires when the browser draws a frame. If you use setTimeout, you're not drawing to the screen, you're drawing to a buffer. Even if it fires more often, you're not getting a higher fps, you're just wasting cpu redrawing a buffer.