code: func (g *memberSet) Close() error {
  	leaveErr := g.memberlist.Leave(5 * time.Second)
  	shutdownErr := g.memberlist.Shutdown()
  	if leaveErr != nil || shutdownErr != nil {
  		return fmt.Errorf("leaving: '%v', shutting down: '%v'", leaveErr, shutdownErr)
  	}
  	return nil
  }
docs: // Close attempts to gracefully leave the cluster, and finally calls shutdown
  // after (at most) a timeout period.