Por que não aguardar na tarefa.Quando todos lançam um AggregateException?

Neste código:

private async void button1_Click(object sender, EventArgs e) {
    try {
        await Task.WhenAll(DoLongThingAsyncEx1(), DoLongThingAsyncEx2());
    }
    catch (Exception ex) {
        // Expect AggregateException, but got InvalidTimeZoneException
    }
}

Task DoLongThingAsyncEx1() {
    return Task.Run(() => { throw new InvalidTimeZoneException(); });
}

Task DoLongThingAsyncEx2() {
    return Task.Run(() => { throw new InvalidOperation();});
}

eu esperavaWhenAll para criar e lançar umAggregateException, uma vez que pelo menos uma das tarefas que estava aguardando lançava uma exceção. Em vez disso, estou recebendo de volta uma única exceção gerada por uma das tarefas.

FazWhenAll nem sempre criar umAggregateException?

questionAnswers(8)

yourAnswerToTheQuestion