Note: this happens only if `capacity == peakCapacity`. When `ObjectPool` is exhausted, `borrowObjects()` blocks and timeouts returning `null` even if during wait, some objects are returned.