title: Is it safe to use ContinueWith as a "finally" operation?
body: <p>Consider a piece of code like:</p>
  
  <pre><code>private Task&lt;string&gt; Download()
  {
      var wc = new WebClient();
      Task&lt;string&gt; backgroundDownload = wc.DownloadStringTaskAsync(this.Uri);
      // Make sure the WebClient is disposed no matter what.
      backgroundDownload.ContinueWith((downloadTask) =&gt; { wc.Dispose(); });
      return backgroundDownload;
  }
  </code></pre>
  
  <p>Can I be certain that the <code>WebClient.Dispose()</code> call occurs and that any exception produced is rethrown to the caller as if there was no call to <code>ContinueWith</code>?</p>
  
  <p>Can clients observe this <code>ContinueWith</code>? (e.g. will later calls to <code>ContinueWith</code> remove the Dispose call?)</p>