title: Different behaviour of Task vs. Task<TResult>
body: <p>In a console application I use async-await as follows:</p>
  
  <pre><code>static void Main(string[] args)
  {
      // Task&lt;Model&gt;
      var taskGetModel = Testcases.GetModel(22);
      taskGetModel.Wait();
  
      // Task without TResult
      var taskSaveModel = Testcases.SaveModel(taskGetModel.Result);
      taskSaveModel.Wait();
  }
  
  public async static Task&lt;Model&gt; GetModel(int number)
  {
      var baseData = await serviceagent.GetBaseData();
  
      var model = await serviceagent.GetModel(baseData, number);
  
      model.BaseData = baseData;
  
      return model;
  }
  
  public static async Task SaveModel(Model model)
  {
      await serviceagent.SaveModel(model);
  }
  
  // as for the service methods:
  public async Task SaveModel(Model model)
  {
      // the method `.ToCommunication` has the signature:
      // public async Task&lt;CommunicationModel&gt; ToCommunication
      var commodel = await new Mapper().ToCommunication(model);
      // Proxy is the interface to the servce (ChannelFactory etc.)
      // the method `.Save` has the signature:
      // public async Task Save(CommunicationModel model)
      await Proxy.Save(commodel);
  }
  public async Task&lt;Model&gt; GetModel(BaseData baseData, int number)
  {
     // NOT a task: CommunicationModel GetCommunicationModel
     var commodel = Proxy.GetCommunicationModel(baseData, number);
     // signature with Task: public async Task&lt;Model&gt; ToModel
     return await new Mapper().ToModel(baseData, commodel);
  } 
  </code></pre>
  
  <p>In static main, the <code>Task&lt;TResult&gt;</code> gives the nice result that the function <code>GetModel</code> returns immediately with the <code>Task</code> and I can wait for its result to finish.</p>
  
  <p>Why does the Task in <code>SaveModel</code> not return immediately?<br>
  The <code>await</code> in <code>SaveModel</code> is already awaited in that method.
  Is it because it doesn not have a <code>TResult</code>?</p>