title: Where is the return statement in async/await
body: <p>I have probably worked myself into a rather immature confusion. Please refer the code below (console app)</p>
  
  <pre><code>namespace Tasks101
  {
      class Program
      {
          static void Main(string[] args)
          {
              Program p = new Program();
              var x = p.Blah();                
          }
  
          private async Task Blah()
          {
              await Task.Delay(TimeSpan.FromSeconds(3)).ConfigureAwait(false);
          }
  
          private async void ReturnsVoid()
          {
              await Task.Delay(TimeSpan.FromSeconds(3)).ConfigureAwait(false);
          }
  
          private void Nothing()
          {
  
          }
      }
  }
  </code></pre>
  
  <p>My question is that in <code>Blah()</code> method I don't have any explicit return statement yet when this executes</p>
  
  <pre><code>var x = p.Blah();
  </code></pre>
  
  <p>the type of <code>x</code> is <code>Task</code>. Again I have no return statement in <code>ReturnsVoid</code> method but that compiles too.</p>
  
  <p>So the questions are </p>
  
  <ol>
  <li>What is returning a <code>Task</code> from the <code>Blah</code> method without my having a <code>return</code> statement there and why is that same thing not returning anything from <code>ReturnsVoid</code> method.</li>
  <li>How do I control what gets returned from the <code>Blah</code> method? What if I had two await statements there one after the other?</li>
  </ol>