title: Cancel C# 4.5 TcpClient ReadAsync by timeout
body: <p>What would the proper way to cancel TcpClient ReadAsync operation by timeout and catch this timeout event in .NET 4.5? </p>
  
  <p>TcpClient.ReadTimeout seems to be applied to the sync Read only.</p>
  
  <p>UPDATE:<br/>
  Tried tro apply the approach desribed here <a href="http://msdn.microsoft.com/en-us/library/hh211418.aspx" rel="noreferrer">Cancelling an Asynchronous Operation</a></p>
  
  <pre><code>var buffer = new byte[4096];
  CancellationTokenSource cts = new CancellationTokenSource(5000);
  int amountRead = await tcpClientStream.ReadAsync(buffer, 0, 4096, cts.Token);
  </code></pre>
  
  <p>but it never cancels by timeout. Is anything wrong?</p>