Почему такая очередь задач?
1. Срабатывает then и добавляет в очередь микрозадач свой каллбэк.
2. Срабатывает setTimeout (22222222) и добавляет в очередь макрозадач свой каллбэк.
3. Основной стек пуст, вызывается задача из очереди микрозадач.
4. Срабатывает setTimeout (11111) и добавляет в очередь макрозадач свой каллбэк.
5. Основной стек пуст, очередь микрозадач пуста, вызывается задача из очереди макрозадач.
6. Выводится '22222222'.
7. Основной стек пуст, очередь микрозадач пуста, вызывается задача из очереди макрозадач.
8. Выводится '11111'.
9. Основной стек пуст, очередь микрозадач пуста, очередь макрозадач пуста.
Попадает очередь в порядке вызова setTimeout, а не в порядке компиляции.
Сначала вызывается timeout2, лишь потом срабатывает then и timeout1 вместе с ним.