setInterval -> requestNextAnimationFrame