RavenDB-2574

Still work in progress... 
I already know how to handle the Detected race conditions (I have to decouple the try async method), but wanted to have your input on the approach.