If we waited for the next call into the chain, yeah. You would then get a nesting of  AggregateException --> AggregateException --> InnerException without special logic in the catch block. 

This feels a bit cleaner to me. We're handling async failures using the task API and sync failures using try/catches.