потому что вам не нужно просто вернуть значение из функции - вы хотите получить все связанные с возвратом эффекты, т.е. агрегацию результатов из резволверов, сериализацию, отправку по сети на клиента, и только затем, когда это произошло "в достаточной мере", вы хотите выполнить "код после return". Так нельзя. Ближайший аналог - это положить promise в очередь, который запустится, когда поток управления вернется в ивентлуп. Ну или setTimeout(0), или запустить промис без await, но эти подходы пахнут.
синхронного способа "выполнить асинхронные эффекты, а потом сделать что-то еще", не существует