I noticed that most of the methods awaited on had an Async suffix in their name. Is that some sort of modern hungarian notation, and is it even necessary? It also looks like you can't pass timeouts to await.
The Async suffix is here to differentiate with the synchronous version of an existing method returning T, the asynchronous return a Task . With a Task you can do : int timeout = 1000; var task = SomeOperationAsync(); if (await Task.WhenAny(task, Task.Delay(timeout)) == task) { // task completed within timeout } else { // timeout logic }
[1] http://msdn.microsoft.com/en-us/library/vstudio/hh156528.asp...