title: HttpClientt.SendAsync doesnt wait/lock execution
body: <pre><code>var httpResponseMessage = await httpClient.SendAsync(message).ConfigureAwait(false);
  var dataStream = await httpResponseMessage.Content.ReadAsStreamAsync();
  </code></pre>
  
  <p>This by idea should be awaited, but no matter what it do executions exists the method and returns to UI. Execution resumes when responses arrives, but by that time UI has already updated that execution finished, when in fact it hasn't.
  All calling methods are awaited.</p>
  
  <p>Initial method is not awaited by design <code>(Task.Run(() =&gt; StartDownload(selectedSchedules));</code> which starts UI method executing services that triggers httpclient, when that call finished UI should update with progress, but the second <code>httpClient.SendAsync</code>is executed, execution returns to UI</p>
  
  <pre><code>Task.Run(() =&gt; StartDownload(selectedSchedules)); //First call, initiated by a button
  
  public async Task StartDownload(SchedulesList list)
  {
      //var t = new Task(() =&gt; _scheduleServices.Download(list));
      //t.Start();
      //await t;
      await _scheduleServices.DownloadIwcfDb(list, UsbInfoModels);
  }
  
  public async Task Download(SchedulesList schedulesList)
  {                         
      await DownloadDb(schedulesList);        
  }
  
  private async Task DownloadDb(SchedulesList schedulesList)
  {
      using (var httpClient = new HttpClient())
      {
          var message = new HttpRequestMessage(new HttpMethod("POST"), ApiCallUrls.GetIwcfSchedules)
          {
              Content = new StringContent(JsonConvert.SerializeObject(schedulesList), Encoding.UTF8, "application/json")
          };
  
          httpClient.Timeout = TimeSpan.FromMinutes(20);
          var httpResponseMessage= await httpClient.SendAsync(message).ConfigureAwait(false);
          var dataStream = await httpResponseMessage.Content.ReadAsStreamAsync();
          using (Stream contentStream = dataStream, stream = new FileStream(Path.Combine(Directories.SomEDir, Directories.SomeFileName), FileMode.Create, FileAccess.Write, FileShare.None))
          {
              await contentStream.CopyToAsync(stream);
          }
      }
  }
  </code></pre>
  
  <p>Call Chain Added, irrelevant code removed from the methods</p>