title: How Do I Call an Async Method from a Non-Async Method?
body: <p>I have the below method: </p>
  
  <pre><code>    public string RetrieveHolidayDatesFromSource() {
          var result = this.RetrieveHolidayDatesFromSourceAsync();
          /** Do stuff **/
          var returnedResult  = this.TransformResults(result.Result); /** Where result gets used **/
          return returnedResult;
      }
  
  
      private async Task&lt;string&gt; RetrieveHolidayDatesFromSourceAsync() {
          using (var httpClient = new HttpClient()) {
              var json = await httpClient.GetStringAsync(SourceURI);
              return json;
          }
      }
  </code></pre>
  
  <p>The above does not work and seems to not return any results properly. I am not sure where I am missing a statement to force the await of a result? I want the <code>RetrieveHolidayDatesFromSource()</code> method to return a string. </p>
  
  <p>The below works fine but it is synchronous and I believe it can be improved upon? Note that the below is synchronous in which I would like to change to Asynchronous but am unable to wrap my head around for some reason.</p>
  
  <pre><code>    public string RetrieveHolidayDatesFromSource() {
          var result = this.RetrieveHolidayDatesFromSourceAsync();
          /** Do Stuff **/
  
          var returnedResult = this.TransformResults(result); /** This is where Result is actually used**/
          return returnedResult;
      }
  
  
      private string RetrieveHolidayDatesFromSourceAsync() {
          using (var httpClient = new HttpClient()) {
              var json = httpClient.GetStringAsync(SourceURI);
              return json.Result;
          }
      }
  </code></pre>
  
  <p>Am I missing something? </p>
  
  <p>Note: For some reason, when I breakpoint the above Async Method, when it gets to the line <code>var json = await httpClient.GetStringAsync(SourceURI)</code> it just goes out of breakpoint and I can't go back into the method.</p>