Потому что именно это и должно быть.
setTimeout не приостанавливает выполнение на указанное время. Он планирует, что ваша функция появится позже, а затем возвращает значение (обычно это число), которое можно использовать для вызова этого расписания.
Функция, очевидно, не может вернуть значение из будущего .