Refactored recursive call into loop
Moved AdjustableSemaphore to ConnectionPool.Sync