title: Are there any guidelines for writing .NET APIs using the new async/await features
body: <p>I'm currently designing some internal APIs where I use the Async CTP and its new <code>await</code>/<code>async</code> keywords. </p>
  
  <p>Are there any guidelines or best practices on how these APIs should be designed? </p>
  
  <p>Specifically:</p>
  
  <ul>
  <li>Should I provide both a synchronous and an asynchronous version of methods? (i.e. <code>Task DoStuffAsync()</code> <em>and</em> <code>void DoStuff()</code></li>
  <li>Should all async methods I expose be in the form <code>async Task&lt;T&gt; GetStuffAsync()</code> (i.e. method name end with <code>Async</code>) or is it ok to to have something named  <code>GetStuff()</code> be awaitable?</li>
  </ul>
  
  <p>I do understand that it's not all black or white here, and that it depends on the method in question, but I'm looking for general guidelines.</p>