title: GetAsync in HttpClient doesn't work as expected
body: <p>I'm not familiar with how exactly <code>async/await</code> work. To try to understand it better, I created a sample code below:</p>
  
  <pre><code>    static void Main(string[] args)
      {
          GetAPI();
          Console.WriteLine("Hello");
          Console.ReadLine();
      }
  
      public static async void GetAPI()
      {
          using (HttpClient client = new HttpClient())
          {
              client.DefaultRequestHeaders.Add("Get", "application/json");
  
              var response = await client.GetAsync("http://somelinks");
  
              string content = await response.Content.ReadAsStringAsync();
              Console.WriteLine(content);
              Console.ReadLine();
          }
      }
  </code></pre>
  
  <p>The <code>GetAPI()</code> method will basically call a an API which return some content in <code>Json</code> format. However, the output that I receive is... surprising, despite the <code>GetAPI()</code> is being called first, "Hello" was being printed first in the Console. When I set the debugger, it seems to me right after it hits the <code>await</code> in the <code>GetAPI()</code>, it will go back to the <code>Main</code>.</p>
  
  <p>How do I print the contents from the API first? In another word, how do I make sure the program finish executing everything in the <code>GetAPI()</code> first?</p>
  
  <p>Additional info:</p>
  
  <ol>
  <li>I was forced to use <code>async/await</code> because <code>HttpClient</code> only provides the <code>GetAsync</code> method.</li>
  <li>I cannot use <code>async/await</code> in <code>Main</code>. It gives me an error saying <code>Error 1   'ConsumeWebApi.Program.Main(string[])': an entry point cannot be marked with the 'async' modifier</code></li>
  </ol>