title: multiple awaits and async methods in an application
body: <p>I'm in the process of converting our data layer for a fairly large and complex WCF application to talk to the database asynchronously.</p>
  
  <p>This has resulted in <code>async</code> and <code>await</code>s being littered everywhere in the calling/consuming code.</p>
  
  <p>Looking at the stack trace for a typical request I can already see many sections for the <code>System.Runtime.CompilerServices.TaskAwaiter</code> doing it's thing with <code>await</code>. And I have only just started this task!</p>
  
  <p>I understand what .net does when it encounters <code>async</code>/<code>await</code>, so my question is the following: Is the extra overhead associated working with <code>async</code>/<code>await</code> worth it when the result is quite a few async methods from the beginning of a request to the end? I understand the benefits of calling the database asynchronously but is there a limit? Particularly when the calling application is fairly large and complex (or more appropriately a large and long call-stack).</p>
  
  <p>Thanks.</p>