frame skipping inside RequestAnimationFrame does not (always) work, this depends on browser implementation.
* RequestAnimationFrame does not equal to setInterval where interval equals to monitor refresh rate
* RequestAnimationFrame does not mean "run the following code as frequent as the monitor refresh rate

it was implemented like this
requestanimationframe will execute the code once, waiting for next monitor refresh, so that the browser can draw what ever stuff in the buffer (it can be canvas buffer, or DOM/CSS buffer)
if nothing is in the buffer, in some browser implementation, it MIGHT execute the code again until something is written to the buffer. this leads to requestAnimationFrame be executed thousands of times in a second, and does not tied to the monitor refresh rate
in some other browser implementation, it MIGHT wait for X amount of time for next execution. where X is unknown, it could be anything

both implementation does not guaranty that RequestAnimationFrame be executed 60 times a second, it only guaranty that the buffer will get written to the screen 60 times a second (or same as refresh rate)