Микротаски. Ты путаешь с промисами. А таймер работают через обычную очередь задач. Плюс ко всему хоть js и однопоточен, но таймер асинхронны и после выполнения в стеке попадают в вебапи который представляет собой что то типо тредов. Почти параллельность, если рассматривать тот же c++. По этому ответ не верный
На сколько помню, таски отличаются от микотасков тем, что вначале в лупе выполняется первый таск, далее идёт вроде обработка анимации, отрабатывают все в текущем стеке. А когда дело доходит до микротасков, они выполняются все, пока не кончатся
посмотри на второе условие "очередь пуста?" оно циклится, если пользователь раз 1000 нажмет на кнопку мыши и тем самым в вебапи создаст 1000 асинхронных команд которые сразуже отправятся в очередь задач, то вот этот второй пункт создает ситуацию, когда перерисовка не будет выполнена пока не выполнятся все коллбеки этих кликов, я бы сказал - синхронно.
Обновление пользовательского интерфейса является сложной операцией, и поэтому браузер может отказаться от его выполнения, если не было запроса на ЯВНЫЙ пересчет элементов интерфейса. Браузер пытается запустить проверку на то, нужен ли пересчет каждые 16.7 ms. Если требуется - он выполнит и между ними
Будет примерно так: Выполняем клик - проверяем, надо ли пересчитать интерфейс - смотрим есть ли микрозадачи, если есть - выполнить все. - проверяем, надо ли пересчитать интерфейс. - смотрим есть ли микрозадачи, если есть - выполнить все, если нет - выполняем клик