I think you see the protection mechanism in setInterval() . If setInterval() not able to keep up with the required interval speed, then it will skip intervals, because if it is not, then additional intervals can accumulate forever, and this is not as good as if it saturate somewhere turn.
From everything that I saw in the queue process, intervals and events go in one queue and are processed in the order in which they were supposed to happen. The difference is that if there is no processed setInterval() request in the queue, it will not queue another one (thus, skipping it).
Mousemove events are also handled specifically so that you cannot fill them as well.
source share