title: Execute all tasks even if one throws an exception
body: <p>I got the following method:</p>
  
  <pre><code>public async Task PublishAsync&lt;TApplicationEvent&gt;(TApplicationEvent e)
      where TApplicationEvent : ApplicationEvent
  {
      using (var scope = _container.CreateScope())
      {
          var implementations = scope.ResolveAll&lt;IApplicationEventSubscriber&lt;TApplicationEvent&gt;&gt;();
          var tasks = implementations.Select(x =&gt; x.HandleAsync(e));
          try
          {
              await Task.WhenAll(tasks);
              EventPublished(this, new EventPublishedEventArgs(scope, e, true));
          }
          catch
          {
              EventPublished(this, new EventPublishedEventArgs(scope, e, false));
              throw;
          }
      }
  }
  </code></pre>
  
  <p>I thought that all tasks would be executed before an exception being thrown, but it seems like the method aborts when the first task thrown an exception.</p>
  
  <p>Can I configure <code>WhenAll</code> to execute all tasks and generate an AggregateException with all failures before returning?</p>