Всмысле кто первым ? Ну в случае Java или C++ да и в правду кто первым, ждет , но в случае Python ты сам задаешь цикл кто первым а кто последним и пока не закончит до await код получает заглушку в виде Future
+ все правильно future в виде заглушки код ждёт выполнения задачи , ибо выполняется в одном потоке . Асинхронность ввода вывода это когда задача выполняется , и ты одновременно ещё одну задачу на ввод или вввод суешь , и обе одновременно в разных потоках выполняются как это делается в сишке