Использование await вне асинхронной функции

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

async function isInLobby() {
    //promise.all([chained methods here])
    let exit = false;
    if (someCondition) exit = true;
}

Это убогий фрагмент моего кода (вы можете увидеть полный объемВот), который просто проверяет, находится ли игрок в лобби, но это не имеет значения.

Далее у нас есть эта асинхронная функция.

async function countPlayer() {
    const keyLength = await scardAsync(game);
    return keyLength;
}

Эта функция не должна запускаться, еслиexit === true.

Я пытался сделать

const inLobby = await isInLobby();

Я надеялся, что это будет ожидать результатов, поэтому я могу использоватьinLobby условно запуститьcountPlayerОднако я получил ошибку типа без конкретных деталей.

Почему ты не можешьawait async функция выходит за рамки функции? Я знаю, что это обещание сахара, поэтому он должен быть прикован кthen но почему это вcountPlayer Я могу ждать другого обещания, но снаружи я не могуawait isInLobby?