为什么等待这个错误任务不抛出异常?

Why is awaiting on this faulted task not throwing the exception?

认为 我已经了解 async 方法中的异常,以及 WhenAll/WhenAny 任务抛出异常时的行为, 但是:

internal async Task RunAsync()
{
    //...

    //one of persistenceTask, monitorsTask is going to throw an exeption
    var completedTask = Task.WhenAny(persistenceTask, monitorsTask);

    await completedTask; //I expect this to throw but it doesn't
}

.

//in a calling method later
var t = await RunAsync();

completedTask 状态为错误时,我可以在调试器中看到内部异常,但 t 最终显示为成功完成。我 想要 RunAsync 抛出的异常 - 我知道 WhenAny 在任务出错时 不会 抛出,但我认为如果我 await 执行错误任务 (completedTask),此 抛出。

我哪里错了?

WhenAny returns 一项永不失败的任务。该任务的结果是已完成的任务。

var completedTask = await Task.WhenAny(persistenceTask, monitorsTask);