title: Converting a WebClient method to async / await
body: <p>I have some existing code which I am porting to Windows 8 WinRT. The code fetches data from URL, asynchronously invoking a passed delegate:</p>
  
  <pre><code>private void RequestData(string uri, Action&lt;string&gt; action)
  {
    var client = new WebClient();
    client.DownloadStringCompleted += (s,e) =&gt; action(e.Result);
    client.DownloadStringAsync(new Uri(uri));
  }
  </code></pre>
  
  <p>Converting to WinRT requires the use of <code>HttpClient</code> and asynchronous methods. I've read a few tutorials on async / await, but am a bit baffled. How can I change the method above, but maintain the method signature in order to avoid changing much more of my code?</p>