http://blogs.microsoft.co.il/blogs/bnaya/archive/2012/01/19/async-await-some-reasoning.aspx