title: ConcurrentDictionary GetOrAdd async
body: <p>I want to use something like <code>GetOrAdd</code> with a <code>ConcurrentDictionary</code> as a cache to a webservice.  Is there an async version of this dictionary? <code>GetOrAdd</code> will be making a web request using <code>HttpClient</code>, so it would be nice if there was a version of this dictionary where <code>GetOrAdd</code> was async.</p>
  <p>To clear up some confusion, the contents of the dictionary will be the response from a call to a webservice.</p>
  <pre><code>ConcurrentDictionary&lt;string, Response&gt; _cache
      = new ConcurrentDictionary&lt;string, Response&gt;();
  
  var response = _cache.GetOrAdd(&quot;id&quot;,
      (x) =&gt; { _httpClient.GetAsync(x).GetAwaiter().GetResponse(); });
  </code></pre>