title: What does 'context' exactly mean in C# async/await code?
body: <p>Lets looks at some simple C# async/await code where I have an object reference (<code>obj</code>) before and after an <code>await</code> with <code>ConfigureAwait(false)</code></p>
  
  <pre><code>private async Task&lt;SomeObject&gt; AnAsyncLibraryMethod(SomeObject obj)
  {
      Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
      obj.Name = "Harry"; // &lt;-- obj here
  
      // MAIN POINT
      var newSubObj = await FetchOverHttpAsync().ConfigureAwait(false);
  
      // Continuation here
      Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
      obj.Name = "Sally"; // &lt;-- same obj here
      return obj;
  }
  
  public class SomeObject { public string Name; }
  </code></pre>
  
  <p><code>ConfigureAwait(false)</code> seems to means <strong>NOT</strong> <em>marshal the continuation back to the original context captured</em> - ok, but what does that really mean? I've tried the code above and <code>obj</code> <strong>IS</strong> correctly referenced back (even when it resumes on a different thread).</p>
  
  <p>So the "context" doesn't appear to be the thread's working memory (i.e. thread local storage). So what does "context" contain? Therefore, what does it really mean to </p>
  
  <blockquote>
    <p><em>marshal the continuation back to the original context captured</em></p>
  </blockquote>