public Task <EventStoreTransaction> StartTransactionAsync(string stream, int expectedVersion) { Ensure.NotNullOrEmpty(stream, "stream"); var source = new TaskCompletionSource <EventStoreTransaction>(); var operation = new StartTransactionOperation(source, Guid.NewGuid(), stream, expectedVersion); EnqueueOperation(operation); return(source.Task); }
public async Task <EventStoreTransaction> StartTransactionAsync(string stream, long expectedVersion, UserCredentials userCredentials = null) { Ensure.NotNullOrEmpty(stream, "stream"); var source = new TaskCompletionSource <EventStoreTransaction>(TaskCreationOptions.RunContinuationsAsynchronously); var operation = new StartTransactionOperation(Settings.Log, source, Settings.RequireMaster, stream, expectedVersion, this, userCredentials); await EnqueueOperation(operation).ConfigureAwait(false); return(await source.Task.ConfigureAwait(false)); }