requestAnimationFrame fallback