code: func (l *serverList) cycleServer() (servers []*metadata.Server) {
  	numServers := len(l.servers)
  	if numServers < 2 {
  		return servers // No action required
  	}
  
  	newServers := make([]*metadata.Server, 0, numServers)
  	newServers = append(newServers, l.servers[1:]...)
  	newServers = append(newServers, l.servers[0])
  
  	return newServers
  }
docs: // cycleServers returns a new list of servers that has dequeued the first
  // server and enqueued it at the end of the list.  cycleServers assumes the
  // caller is holding the listLock.  cycleServer does not test or ping
  // the next server inline.  cycleServer may be called when the environment
  // has just entered an unhealthy situation and blocking on a server test is
  // less desirable than just returning the next server in the firing line.  If
  // the next server fails, it will fail fast enough and cycleServer will be
  // called again.