Как можно заморозить основной метод пока не выполниться асинхронный?

Понимаю что заморозка основного метода на момент выполнения асинхронного выглядит немного бредовой, поскольку асинхронный метод и нужен для того чтоб выполняться независимо от основного, однако возникла такая надобность, Discord.NET требует чтоб бот находился внутри асинхронного метода.

представим такой вызов асинхронного метода:

static async Task<string> StartDiscordBot()
{
    string errorcode = await DiscordBOT.InitializeBot(Constants.DiscordBotToken);
    return errorcode;
}

и сам асинхронный метод:

static public async Task<string> InitializeBot(string token)
{
    try 
    {
        while (true)
        {
            Console.WriteLine($"[DEBUG] Discord bot launched with token: {token}");
            await Task.Delay(5000);
        }
    }
    catch(Exception ex){ return ex.Message; }
}

мне нужно чтоб код замерз на моменте

string errorcode = await DiscordBOT.InitializeBot(Constants.DiscordBotToken);}

и не шёл дальше пока не получит return от InitializeBot, я пробовал использовать .Wait() вот так:

string errorcode = await DiscordBOT.InitializeBot(Constants.DiscordBotToken).Wait();

однако в таком случае получаю ошибку CS4008 Cannot await 'void'\

по просьбам из коментариев предоставляю минимальный самодостаточный пример:

class Program
{
    static void Main()
    {
        string? errorcode = StartDiscordBot().ToString();
        Console.WriteLine(errorcode);
        Console.ReadKey();
    }
    static async Task<string> StartDiscordBot()
    {
        string errorcode = await InitializeBot("TESTTOKEN");
        return errorcode;
    }
    static public async Task<string> InitializeBot(string token)
    {
        try
        {
            while (true)
            {
                Console.WriteLine($"[DEBUG] Discord bot launched with token: {token}");
                await Task.Delay(1000);
            }
        }
        catch (Exception ex) { return ex.Message; }
    }
}

мне нужно чтоб return в 'StartDiscordBot()' сработал только после того как 'InitializeBot()' завершиться, однако у меня return срабатывает моментально


Ответы (0 шт):