Правильный ответ: в спецификации языка это не описано (т.к. там нет setTimeout).
Так что зависит от реализации. В частности, пока в браузеры не завезли настоящих промизов их как раз эмулировали через setTimeout и в этом случае первым был бы alert('timeout')
Поэтому нельзя закладываться на порядок выполнения разных асинхронных операций. Единственная гарантия которая у вас есть, это что они выполнятся после всех текущих синхронных действий.