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