An async semaphore.
A semaphore is a synchronization primitive that limits the number of concurrent operations.