Adding concurrency guards to async methods.
Async methods that mutate shared state will now take a lock.
Methods that use shared state will throw if it's locked.
Some of the async methods were reimplemented without async keyword to allow the concurrency exceptions to be thrown synchronously.
WorkItem: 390
↧