в императивном языке тоже дно, ибо приходится по 2 раза описывать бизнес логику, которой вообще должно быть похрен, что там под капотом, синхронное IO или асинхронное
ну нет же, в императивном ты явно указываешь синхронизацию. Да, можно один раз завернуть всё в футуры и использовать только асинхронное апи с готовыми футурами, но можно этого не делать.