> 2. Функция модифицирует твоё окружение
Создает побочные эффекты? Ну... это может быть какое-нибудь логирование, тогда сообщение запишется не перед остальным кодом, а в рандомный момент, поди разберись потом, что когда там было.
Для строгих типов - да, компилер может подсказать, что промис пытается попасть в переменную со значением от него, но опять-таки сохраняются коварные ошибки через тот же автовывод типов. если промис присваивается в переменную без типа, а потом она используется в какой-нибудь функции форматирования, то будет его приведение к строке\вызов toString\etc и туда попадет не значение, а строковое представление промиса\future.