code: func (c *cluster) unprotectedSendSync(m Message) error {
  	var eg errgroup.Group
  	for _, node := range c.nodes {
  		node := node
  		// Don't send to myself.
  		if node.ID == c.Node.ID {
  			continue
  		}
  		eg.Go(func() error { return c.broadcaster.SendTo(node, m) })
  	}
  	return eg.Wait()
  }
docs: // unprotectedSendSync is used in place of c.broadcaster.SendSync (which is
  // Server.SendSync) because Server.SendSync needs to obtain a cluster lock to
  // get the list of nodes. TODO: the reference loop from
  // Server->cluster->broadcaster(Server) will likely continue to cause confusion
  // and should be refactored.