Warum wird immer nur eine von vielen Ausnahmen von untergeordneten Aufgaben propagiert?

Ich kämpfe darum, die Gründe für die Ausnahmebedingung und die Fehlerbehandlung in TPL besser zu verstehen (und mit etwas mehr Glück in .NET 4.5 async / await-Aufgaben).

Das etwas modifizierte von meiner früheren Frage"Wie kann ich den Code / die Anweisungen aus dem Artikel" Async - Umgang mit mehreren Ausnahmen "besser verstehen?" C # -Konsolenanwendungscode wird ausgeführt 2freistehendes inneres verschachtelt angefügtes (abhängiges) Kind (Update: Entschuldigung, eine Frage hat begonnen, aber von einer anderen beendet!) Aufgaben:

class Program
{  
   static void Main(string[] args)
   {  Tst();
      Console.ReadLine();
   }
   async static Task  Tst()
   {
       try
       {
           await Task.Factory.StartNew
             (() =>
                {
                   Task.Factory.StartNew
                       (   () => { 
                                    Console.WriteLine("From 1st child");
                                    throw new NullReferenceException(); 
                                  }
                            , TaskCreationOptions.AttachedToParent
                        );
               Task.Factory.StartNew
                       (  () =>
                               { 
                                   Console.WriteLine("From 2nd child");
                                   throw new ArgumentException(); 
                               }
      ,TaskCreationOptions.AttachedToParent
                       );
                }
             );
    }
    catch (AggregateException ex)
    {
        Console.WriteLine("** {0} **", ex.GetType().Name);
        foreach (var exc in ex.Flatten().InnerExceptions)
        {
             Console.WriteLine(exc.GetType().Name);
        }
    }
    catch (Exception ex)
    {
       Console.WriteLine("## {0} ##", ex.GetType().Name);
    }
 } 

Erzeugt eine Ausgabe, die (nicht deterministisch) wechselt zwischen:

From 1st child
From 2nd child
** AggregateException **
ArgumentException

und

From 1t child
From 2nd child
** AggregateException **
NullReferenceException

Scheint immer nur eine Ausnahme von einer untergeordneten Aufgabe zu sein, die immer weitergegeben / abgefangen wurde.

Warum wird nur eine Ausnahme propagiert / gefangen?
Ich hätte es besser verstanden, wenn keine oder vielmehr alle Ausnahmen von untergeordneten Aufgaben immer abgefangen werden

Ist es in dieser Situation möglich, dass beide oder keine Ausnahme abgefangen werden?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage