public void should_wait_for_delay_before_persisting_messages()
        {
            _delay = 5.Seconds();

            var persistedSignal = new ManualResetEvent(false);

            _storeBatchFunc = _ => persistedSignal.Set();

            using (SystemDateTime.PauseTime())
            {
                _matcher.Start();

                _matcher.EnqueueMessage(_peerId, MessageId.NextId(), new MessageTypeId("Abc.X"), new byte[0]);

                persistedSignal.WaitOne(500.Milliseconds()).ShouldBeFalse();

                SystemDateTime.Set(utcNow: SystemDateTime.UtcNow.Add(_delay.GetValueOrDefault()));

                persistedSignal.WaitOne(600.Milliseconds()).ShouldBeTrue();
            }
        }