Советую посмотреть
хороший доклад (
презентация) по теме разработки игр на JavaScript:
— Создание игр на JavaScript с нуля (ES2015)
— Как правильно организовать game loop и render loop
— Что нужно для того чтобы игра работала плавно
— Оптимизация производительности
Для меня же странно, что подобное не делают с помощью файберов;
в этом случае можно иметь хорошую абстракцию для (мелких) «задач» и удобно выполнять их по приоритетам.