code: func (c *cluster) removeNode(nodeID string) error {
  	// remove from cluster
  	c.removeNodeBasicSorted(nodeID)
  
  	// remove from topology
  	if c.Topology == nil {
  		return fmt.Errorf("Cluster.Topology is nil")
  	}
  	if !c.Topology.removeID(nodeID) {
  		return nil
  	}
  
  	// save topology
  	return c.saveTopology()
  }
docs: // removeNode removes a node from the Cluster and updates and saves the
  // new topology. unprotected.