* Use field rather than property
Operate on a field directly, rather than through a property.
* Make field readonly
Make field read-only as its value is never changed.
* Remove lock
Use Interlocked.Decrement() instead of taking a lock.
* Remove lock for increment
This removes the need for the lock in the success case at the cost of an extra Interlocked.Decrement() call for the failed case.
* Fix typos
Change "availible" to "available".
* Add unit test for full queue
Add a unit test that validates request is not queued if the queue is already full.