title: Understanding async with WebClient UploadString() vs UploadStringTaskAsync
body: <p>I'm struggling to understand the benefits of async vs sync, when it runs in a non-visual context, e.g. an Azure Worker or a Web Api controller:</p>
  
  <pre><code>using (var wc = new WebClient())
  {
      wc.UploadString(uri, message);
      // vs.
      await wc.UploadStringTaskAsync(uri, message);
  }
  </code></pre>
  
  <p>Doesn't the main thread need to wait anyway and hence it makes no difference for performance? What else is there apart from UI jobs?</p>