PYTHON-436 use another semaphore for max waiters instead of custom logic