public async Task SendsMessageOnlyWhenTransactionScopeIsCompleted(bool completeTheScope, bool throwException, bool expectToReceiveMessage)
        {
            var gotMessage = false;
            _activator.Handle<string>(async str => gotMessage = true);

            try
            {
                using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
                {
                    scope.EnlistRebus();

                    await _bus.SendLocal("hallå i stuen!1");

                    if (throwException)
                    {
                        throw new ApplicationException("omg what is this?????");
                    }

                    if (completeTheScope)
                    {
                        scope.Complete();
                    }
                }
            }
            catch(ApplicationException exception) when (exception.Message == "omg what is this?????")
            {
                Console.WriteLine("An exception occurred... quite expected though");
            }

            await Task.Delay(1000);

            Assert.That(gotMessage, Is.EqualTo(expectToReceiveMessage), "Must receive message IFF the tx scope is completed");
        }
        public async Task SendsMessageOnlyWhenTransactionScopeIsCompleted(bool completeTheScope, bool expectToReceiveMessage)
        {
            var gotMessage = false;
            _activator.Handle<string>(async str => gotMessage = true);

            using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
            {
                scope.EnlistRebus();

                await _bus.SendLocal("hallå i stuen!1");

                if (completeTheScope)
                {
                    scope.Complete();
                }
            }

            await Task.Delay(1000);

            Assert.That(gotMessage, Is.EqualTo(expectToReceiveMessage), "Must receive message IFF the tx scope is completed");
        }