En fait il y a pas vraiment d’événement à déclencher.
On va dire qu'il y a un "événement" (qu'on va appeler tick) qui se déclenche environ 60 fois par seconde tout le temps (je penses qu'elle s’arrête quand tu passes à un autre onglet par exemple, mais je ne suis pas certain).
Et quand tu passes une fonction à requestAnimationFrame, le navigateur va l'appeler au prochain "tick".
L'astuce c'est que une fois qu'on arrive à la fin de la fonction, on peut directement repasser notre fonction pour que le navigateur l’exécute le plus tôt possible (au prochain "tick").
Normalement, on calcule le délai entre les appels à l'aide de la variable <time>, pour pouvoir avoir une vitesse constante.
Car dans mon exemple, si par exemple le navigateur rame, la vitesse de l'animation va ralentir.