# File lib/redis/connection/ruby.rb, line 110
        def self.connect(host, port, timeout)
          # Limit lookup to IPv4, as Redis doesn't yet do IPv6...
          addr = ::Socket.getaddrinfo(host, nil, Socket::AF_INET)
          sock = new(::Socket.const_get(addr[0][0]), Socket::SOCK_STREAM, 0)
          sockaddr = ::Socket.pack_sockaddr_in(port, addr[0][3])

          begin
            sock.connect_nonblock(sockaddr)
          rescue Errno::EINPROGRESS
            if IO.select(nil, [sock], nil, timeout) == nil
              raise TimeoutError
            end

            begin
              sock.connect_nonblock(sockaddr)
            rescue Errno::EISCONN
            end
          end

          sock
        end