It turns out that task.ContinueWith can (and will) run the continuation on the thread pool, this causes a terrible race contidion where continuations aren't guaranteed to have run by the end of the using block. This patch fixes that bug by directly calling the continuation instead of using task.ContinueWith