I am using Task.WhenAll to schedule tasks concurrently (more or less of course) and want to rethrow all exceptions rather than the first one what Task.WhenAll would do.
So I want to perfor a continuation whenever any child task faulted or has been canceled.
That's what NotOnRanToCompletion means, right?
Well this actually works but in case that all Tasks actually have completed, I get a Task Cancelled exception on the Continuation?
var semaphore = new SemaphoreSlim(10);
var tasks = portList.Select(async port =>
{
    try
    {
        await semaphore.WaitAsync();
        await this.AddDeviceAsync(bioprocessDevicesDto, template, port);
    }
    finally
    {
        semaphore.Release();
    }
});
await Task.WhenAll(tasks).ContinueWith(t =>
{
    // this will make all inner exceptions available
    // never null
    throw t.Exception;
}, TaskContinuationOptions.NotOnRanToCompletion).ConfigureAwait(false);

 
     
     
     
    