You can control the timing by using a timer inside your
requestAnimationFrame function. It's not the most ideal solution, but it gets very close.
Advantages over CSS Animations
Advantages over the Web Animations API
The biggest drawback in my opinion is browser support. While there are polyfills out there for it, they aren't the most performant of things.
requestAnimationFrame has got you covered.
What are you trying to animate? Maybe we can shed some tips on what approach might work better for your needs