I think we should rename this to `Semaphore`.