How Do I Call an Async Method from a Non-Async Method?
<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>