public async Task PreventMultipleThreadsFromAccessingTheResource()
        {
            using var target = new OneOrMoreThreadsPerResourcePolicy(1);
            await target.AcquireLockAsync(CancellationToken.None);

            cancellationSource.CancelAfter(1000);

            Assert.ThrowsAsync <OperationCanceledException>(async() => await target.AcquireLockAsync(cancellationSource.Token));
        }
        public void ThrowsAnExceptionAfterBeingDisposed()
        {
            var target = new OneOrMoreThreadsPerResourcePolicy(1);

            target.Dispose();

            Assert.ThrowsAsync <ObjectDisposedException>(async() => await target.AcquireLockAsync(CancellationToken.None));
        }