title: Can the Elapsed callback of a System.Timers.Timer be async?
body: <p>Is it possible (or even reasonable) to make the callback of a <code>System.Timers.Timer</code> an async method? Something like:</p>
  
  <pre><code>var timer = new System.Timers.Timer
  {
     Interval = TimeSpan.FromSeconds(30).TotalMilliseconds,
     AutoReset = true
  };
  timer.Elapsed += async (sender, e) =&gt; { /* await something */ };
  timer.Start();
  </code></pre>
  
  <p>It compiles (obviously a good place to start), but I'm not sure I understand the consequences. Will the timer <code>await</code> the callback before resetting the timer?</p>