public async Task CannotInsertSameSagaDataTwice()
        {
            var correlationProperties = new ISagaCorrelationProperty[]
            {
                new TestCorrelationProperty(nameof(JustSomeSagaData.CorrelationProperty1), typeof(JustSomeSagaData)),
                new TestCorrelationProperty(nameof(JustSomeSagaData.CorrelationProperty2), typeof(JustSomeSagaData)),
            };

            var sagaDataId = Guid.NewGuid();
            var sagaData   = new JustSomeSagaData {
                Id = sagaDataId
            };
            await _storage.Insert(sagaData, correlationProperties);

            var aggregateException = Assert.Throws <AggregateException>(() =>
            {
                _storage.Insert(sagaData, correlationProperties).Wait();
            });

            var baseException = aggregateException.GetBaseException();

            Console.WriteLine(baseException);

            Assert.That(baseException, Is.TypeOf <ConcurrencyException>());
        }
        public async Task CannotUpdateSagaDataInParallel()
        {
            var correlationProperties = new ISagaCorrelationProperty[]
            {
                new TestCorrelationProperty(nameof(JustSomeSagaData.CorrelationProperty1), typeof(JustSomeSagaData)),
                new TestCorrelationProperty(nameof(JustSomeSagaData.CorrelationProperty2), typeof(JustSomeSagaData)),
            };

            var sagaData = new JustSomeSagaData
            {
                Id = Guid.NewGuid(),
                CorrelationProperty1 = "c1",
                CorrelationProperty2 = "c2"
            };

            await _storage.Insert(sagaData, correlationProperties);

            var data1 = (JustSomeSagaData)await _storage.Find(typeof(JustSomeSagaData), nameof(JustSomeSagaData.CorrelationProperty1), "c1");

            var data2 = (JustSomeSagaData)await _storage.Find(typeof(JustSomeSagaData), nameof(JustSomeSagaData.CorrelationProperty2), "c2");

            data1.Counter++;
            data2.Counter++;

            await _storage.Update(data1, correlationProperties);

            var aggregateException = Assert.Throws <AggregateException>(() =>
            {
                _storage.Update(data2, correlationProperties).Wait();
            });

            var baseException = aggregateException.GetBaseException();

            Console.WriteLine(baseException);

            Assert.That(baseException, Is.TypeOf <ConcurrencyException>());
        }