code: func (nc *Conn) selectNextServer() (*srv, error) {
  	i, s := nc.currentServer()
  	if i < 0 {
  		return nil, ErrNoServers
  	}
  	sp := nc.srvPool
  	num := len(sp)
  	copy(sp[i:num-1], sp[i+1:num])
  	maxReconnect := nc.Opts.MaxReconnect
  	if maxReconnect < 0 || s.reconnects < maxReconnect {
  		nc.srvPool[num-1] = s
  	} else {
  		nc.srvPool = sp[0 : num-1]
  	}
  	if len(nc.srvPool) <= 0 {
  		nc.current = nil
  		return nil, ErrNoServers
  	}
  	nc.current = nc.srvPool[0]
  	return nc.srvPool[0], nil
  }
docs: // Pop the current server and put onto the end of the list. Select head of list as long
  // as number of reconnect attempts under MaxReconnect.