code: func (c *cluster) setCoordinator(n *Node) error {
  	c.mu.Lock()
  	defer c.mu.Unlock()
  	// Verify that the new Coordinator value matches
  	// this node.
  	if c.Node.ID != n.ID {
  		return fmt.Errorf("coordinator node does not match this node")
  	}
  
  	// Update IsCoordinator on all nodes (locally).
  	_ = c.unprotectedUpdateCoordinator(n)
  
  	// Send the update coordinator message to all nodes.
  	err := c.unprotectedSendSync(
  		&UpdateCoordinatorMessage{
  			New: n,
  		})
  	if err != nil {
  		return fmt.Errorf("problem sending UpdateCoordinator message: %v", err)
  	}
  
  	// Broadcast cluster status.
  	return c.unprotectedSendSync(c.unprotectedStatus())
  }
docs: // setCoordinator tells the current node to become the
  // Coordinator. In response to this, the current node
  // will consider itself coordinator and update the other
  // nodes with its version of Cluster.Status.