public void TryWithLockAction_ExceptionInAcquire_ThrowLockException()
        {
            // setup
            var semaphore = new SemaphoreSlim(1);
            var value     = new List();
            var subject   = new AsyncSynchronized <List>(semaphore, value);

            semaphore.Dispose();

            // act and assert
            var exception = Should.Throw <LockException>(() => subject.TryWithLock((v) =>
            {
            }));

            exception.InnerException.ShouldBeOfType <ObjectDisposedException>();
        }