How do I handle multiple returned Task<response>
<p>I've searched through the questions here and all I see are simple theoretical BS.  So here is my scenario : we have a new application and one spoiled consumer with their own older system.  So in our system when an evaluation reaches a specific state, we are to transmit all the data to their service.  </p>

<p>The first part is simple: get the data from the record, put it into their datacontracts, and send the data to them.  But the second part is where it gets slippery because it requires sending all supporting documents.  So in a real world case I have a Referral Document, an Assessment Document, and a Summary of Findings.  So in my main code I'm just saying this :</p>

<pre><code>if (client.ReferralDocument != null)
    response = TransmitDocumentAsync(client.ReferralDocument);
if (client.Assessment != null)
    response = TransmitDocumentAsync(client.Assessment);
if (cilent.Summary != null)
    response = TransmitDocumentAsync(client.Summary);
</code></pre>

<p>Now the method called is asynchronous and it is simply</p>

<pre><code>public static async Task&lt;Response&gt; TransmitDocumentAsync(byte[] document)
{
     InterimResponse x = await proxy.InsertAttachmentAsync(document, identifier);
     return new Task&lt;Response&gt;(new Response(InterimResponse);
}
</code></pre>

<p>So I am able to basically throw those documents 'over the wall' to be uploaded without waiting.  But what I'm stuck on is how I handle the returned objects and how do I know which document it is tied to?  </p>

<p>What I'm asking is what I need to add after the three calls to handle any errors returned as well as any other issues or exceptions that arise?  Do I just do an await on return?  Do I have 3 return objects (referalResponse, assessmentResponse, summaryResponse) and issue an await on each one?  Am I overthinking this and just let things end without concern for the results?  :)</p>