code: func (a *Autopilot) promoteServers() error {
  	conf := a.delegate.AutopilotConfig()
  	if conf == nil {
  		return nil
  	}
  
  	// Skip the non-voter promotions unless all servers support the new APIs
  	minRaftProtocol, err := a.MinRaftProtocol()
  	if err != nil {
  		return fmt.Errorf("error getting server raft protocol versions: %s", err)
  	}
  	if minRaftProtocol >= 3 {
  		promotions, err := a.delegate.PromoteNonVoters(conf, a.GetClusterHealth())
  		if err != nil {
  			return fmt.Errorf("error checking for non-voters to promote: %s", err)
  		}
  		if err := a.handlePromotions(promotions); err != nil {
  			return fmt.Errorf("error handling promotions: %s", err)
  		}
  	}
  
  	return nil
  }
docs: // promoteServers asks the delegate for any promotions and carries them out.