def with
      conn = @pool.checkout
      session = Session.new(conn)
      yield(session)
    ensure
      if conn
        session.discard if conn.in_transaction?
        @pool.checkin
      end
    end
def with
      conn = @pool.checkout
      session = Session.new(conn)
      yield(session)
    ensure
      if conn
        session.discard if conn.in_transaction?
        @pool.checkin
      end
    end
Initialize connection pool

 @param [Hash] options Connection options

 @option options [Float] :timeout (1.0) Connection acquisition timeout.
 @option options [Integer] :size Pool size.
 @option options [Hash] :connection see {Connection#initialize}
 Run commands on a connection from pool.
 Connection is wrapped to the {Session}.
 @yield [session] provide {Session} to a block
 @yieldreturn response from the last executed operation

 @example
   pool = Oxblood::Pool.new(size: 8)
   pool.with do |session|
     session.set('hello', 'world')
     session.get('hello')
   end # => 'world'