Почему всегда распространяется только одно из многих исключений из дочерних задач?

Я изо всех сил пытаюсь лучше понять причину исключений и обработки ошибок в TPL (и с еще большей удачей в .NET 4.5 асинхронных / ожидающих задач)

Немного модифицированный из моего предыдущего вопросаКак лучше понять код / операторы изAsync - обработка нескольких исключений " статья?" Код консольного приложения C #, работающий 2отдельный внутренний вложенный прикрепленный (зависимый) ребенок (обновление: извините, один вопрос начался, а другой закончился!):

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);
    }
 } 

производит выходные данные, которые чередуются (недетерминированно) между:

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

а также

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

Похоже, что всегда одно и только одно исключение из одной из дочерних задач всегда распространяется / перехватывается.

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

я бы лучше понял, если бы не вылавливались все или почти все исключения из дочерних задач

Возможно ли в этой ситуации, что оба или ни одно исключение будут пойманы?

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

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