# File lib/hiredis/ruby/connection.rb, line 122
        def _write(sock, data, timeout)
          data.force_encoding("binary") if data.respond_to?(:force_encoding)

          begin
            nwritten = @sock.write_nonblock(data)

            while nwritten < string_size(data)
              data = data[nwritten..-1]
              nwritten = @sock.write_nonblock(data)
            end
          rescue Errno::EAGAIN
            if IO.select([], [@sock], [], timeout)
              # Writable, try again
              retry
            else
              # Timed out, raise
              raise Errno::EAGAIN
            end
          end
        end