Request animation frame is much cleaner than setTimeout

Only supporting modern browsers is the best.