Throw Exception inside a Task - "await" vs Wait()
The goal is to make it look/act like the synchronous version. Jon Skeet does a great job explaining this in his Eduasync series, specifically this post:
http://codeblog.jonskeet.uk/2011/06/22/eduasync-part-11-more-sophisticated-but-lossy-exception-handling/
In TPL AggregateException
is used because you can have multiple tasks in wait operation (task can have child tasks attached), so many of them can throw exceptions. Look at Exceptions in child tasks section here:
https://msdn.microsoft.com/ru-ru/library/dd997417(v=vs.110).aspx
In await
you always have just one task.
See also https://msdn.microsoft.com/ru-ru/library/dd997415(v=vs.110).aspx