code: func (s *Server) Close() error {
  	// Notify goroutines to stop.
  	close(s.closing)
  	s.wg.Wait()
  
  	var errh error
  	var errc error
  	if s.cluster != nil {
  		errc = s.cluster.close()
  	}
  	if s.holder != nil {
  		errh = s.holder.Close()
  	}
  	// prefer to return holder error over cluster
  	// error. This order is somewhat arbitrary. It would be better if we had
  	// some way to combine all the errors, but probably not important enough to
  	// warrant the extra complexity.
  	if errh != nil {
  		return errors.Wrap(errh, "closing holder")
  	}
  	return errors.Wrap(errc, "closing cluster")
  }
docs: // Close closes the server and waits for it to shutdown.