¿Por qué no aguarda en Tarea.Cuando todos lanzan una excepción AggregateException?

En este 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();});
}

EsperabaWhenAll para crear y lanzar unAggregateException, ya que al menos una de las tareas que estaba esperando lanzó una excepción. En su lugar, estoy recuperando una sola excepción lanzada por una de las tareas.

HaceWhenAll no siempre crear unAggregateException?

Respuestas a la pregunta(8)

Su respuesta a la pregunta