title: Asynchronously wait for Task<T> to complete with timeout
body: <p>I&nbsp;want to wait for a <a href="http://msdn.microsoft.com/en-us/library/dd321424.aspx">Task&lt;T&gt;</a> to complete with some special rules:
  If it hasn't completed after X milliseconds, I&nbsp;want to display a message to the user.
  And if it hasn't completed after Y milliseconds, I&nbsp;want to automatically <a href="http://msdn.microsoft.com/en-us/library/dd321955.aspx">request cancellation</a>.</p>
  
  <p>I&nbsp;can use <a href="http://msdn.microsoft.com/en-us/library/dd270696.aspx">Task.ContinueWith</a> to asynchronously wait for the task to complete (i.e.&nbsp;schedule an action to be executed when the task is complete), but that doesn't allow to specify a timeout.
  I can use <a href="http://msdn.microsoft.com/en-us/library/dd235606.aspx">Task.Wait</a> to synchronously wait for the task to complete with a timeout, but that blocks my thread.
  How can I asynchronously wait for the task to complete with a timeout?</p>