title: Understanding Task vs Task<T> as a return type
body: <p>Apologies if this has been addressed somewhere, but it is quite overwhelming the amount of resources on the topic.</p>
  
  <p>I wrote the following method that awaits on an async call</p>
  
  <pre><code>public async Task GetAllObjectsNames(string bucketName)
  {
      if (string.IsNullOrEmpty(bucketName))
      {
          throw new ArgumentNullException(nameof(bucketName), "bucket name can't be null or empty string");
      }
  
      var request = new ListObjectsRequest
      {
          BucketName = bucketName
      };
  
      await  s_client.ListObjectsAsync(request);
  }
  </code></pre>
  
  <p>Working on wrapping my head around the difference between returning a <code>Task</code> and returning a <code>Task&lt;T&gt;</code> </p>
  
  <pre><code>public async Task&lt;IEnumerable&lt;string&gt;&gt; GetAllObjectsNames(string bucketName)
  {
      if (string.IsNullOrEmpty(bucketName))
      {
          throw new ArgumentNullException(nameof(bucketName), "bucket name can't be null or empty string");
      }
  
      var request = new ListObjectsRequest
      {
          BucketName = bucketName
      };
  
      var response = await s_client.ListObjectsAsync(request);
  
      return response.S3Objects.Select(o =&gt; o.Key);
  }
  </code></pre>
  
  <p>Could someone chime in?</p>