Как правильно отменить исключение из задачи уже в неисправном состоянии?

У меня есть синхронный метод, который, помимо прочего, проверяет состояние ожидающей задачи и сбрасывает ее исключение, если таковое имеется:

void Test(Task task)
{
    // ...
    if (task.IsFaulted)
        throw task.Exception;
    // ...
}

Это неt распространяет информацию трассировки стека исключений и является недружественным для отладчика.

Теперь, еслиTest былоasync, это не было бы так просто и естественно, как это:

async Task Test(Task task)
{
    // ...
    if (task.IsFaulted)
        await task; // rethrow immediately and correctly
    // ...
}

Вопрос: как правильно сделать это для синхронного метода? Я придумал это, но мне это не нравится

void Test(Task task)
{
    // ...
    if (task.IsFaulted)
        new Action(async () => await task)();
    // ...
}

Ответы на вопрос(1)

Ваш ответ на вопрос