I'm probably just being thick... but doesn't this deadlock?

If some other thread is currently establishing a connection (and there aren't any free), we'll wait on `@available.poll(@checkout_timeout)` (a timeout which, given our use case here, seems a little precarious to me anyway...), but when the connecting thread finishes establishing its connection, it'll need to adopt it, which it can't do because we're asleep inside a `synchronize`.