title: Debugger not breaking/stopping for exceptions in async method
body: <p>When a debugger is attached to a .NET process, it (usually) stops when an unhandled exception is thrown.</p>
  
  <p>However, this doesn't seem to work when you're in an <code>async</code> method.</p>
  
  <p>The scenarios I've tried before are listed in the following code:</p>
  
  <pre><code>class Program
  {
      static void Main()
      {
          // Debugger stopps correctly
          Task.Run(() =&gt; SyncOp());
  
          // Debugger doesn't stop
          Task.Run(async () =&gt; SyncOp());
  
          // Debugger doesn't stop
          Task.Run((Func&lt;Task&gt;)AsyncTaskOp);
  
          // Debugger stops on "Wait()" with "AggregateException"
          Task.Run(() =&gt; AsyncTaskOp().Wait());
  
          // Throws "Exceptions was unhandled by user code" on "await"
          Task.Run(() =&gt; AsyncVoidOp());
  
          Thread.Sleep(2000);
      }
  
      static void SyncOp()
      {
          throw new Exception("Exception in sync method");
      }
  
      async static void AsyncVoidOp()
      {
          await AsyncTaskOp();
      }
  
      async static Task AsyncTaskOp()
      {
          await Task.Delay(300);
          throw new Exception("Exception in async method");
      }
  }
  </code></pre>
  
  <p>Am I missing something? How can I make the debugger to break/stop on the exception in <code>AsyncTaskOp()</code>?</p>