If #checkout fails (no connections left in pool) the ensure called #checkin which would then raise ConnectionPool::Error so the user would get a bogus exception.

With the refactor the user gets Timeout::Error.