title: Why does an "async void" method run synchronously?
body: <p><a href="https://stackoverflow.com/questions/8043296/whats-the-difference-between-returning-void-and-returning-a-task">Here</a> Eric Lippert says:  </p>
  
  <blockquote>
    <p>A void returning async method cannot be awaited; it is a "fire and
    forget" method. <strong><em>It does work asynchronously</em></strong>...</p>
  </blockquote>
  
  <p><strong><em>It does work asynchronously right?</em></strong></p>
  
  <p>To test that, I made a windows form application and handled one arbitrary event. Inside handler, I started a heavy computation. Clearly, it blocks the UI to respond:</p>
  
  <pre><code>this.KeyPress += Form1_KeyPressed;
  ....
  private async void Form1_KeyPressed(object sender, EventArgs e)
  {
     for(int i=0; i&lt;int.max; i++)
        ;
  }
  </code></pre>
  
  <p>What am I missing in Eric's answer?</p>