title: Task vs async Task
body: <p>Ok, I've been trying to figure this out, I've read some articles but none of them provide the answer I'm looking for.</p>
  
  <p>My question is: Why <code>Task</code> has to return a Task whilst <code>async Task</code> doesn't?
  For example:</p>
  
  <pre><code>public override Task TokenEndpoint(OAuthTokenEndpointContext context)
  {
      // Code removed for brevity.
  
      return Task.FromResult&lt;object&gt;(null);
  }
  </code></pre>
  
  <p>As you can see there, that method isn't <code>async</code>, so it has to return a Task.</p>
  
  <p>Now, take a look at this one:</p>
  
  <pre><code>public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
  {
      // Code removed for brevity...
      if(user == null)
      {
          context.SetError("invalid_grant", "username_or_password_incorrect");
          return;
      }
  
      if(!user.EmailConfirmed)
      {
          context.SetError("invalid_grant", "email_not_confirmed");
          return;
      }
  
      // Code removed for brevity, no returns down here...
  }
  </code></pre>
  
  <p>It uses the <code>async</code> keyword, but it doesn't return a Task. Why is that?
  I know this may be probably the stupidest question ever.
  But I wanna know why it is like this.</p>