code: func (n *Node) checkHealth(ctx context.Context, addr string, timeout time.Duration) error {
  	conn, err := dial(addr, "tcp", n.opts.TLSCredentials, timeout)
  	if err != nil {
  		return err
  	}
  
  	defer conn.Close()
  
  	if timeout != 0 {
  		tctx, cancel := context.WithTimeout(ctx, timeout)
  		defer cancel()
  		ctx = tctx
  	}
  
  	healthClient := api.NewHealthClient(conn)
  	resp, err := healthClient.Check(ctx, &api.HealthCheckRequest{Service: "Raft"})
  	if err != nil {
  		return errors.Wrap(err, "could not connect to prospective new cluster member using its advertised address")
  	}
  	if resp.Status != api.HealthCheckResponse_SERVING {
  		return fmt.Errorf("health check returned status %s", resp.Status.String())
  	}
  
  	return nil
  }
docs: // checkHealth tries to contact an aspiring member through its advertised address
  // and checks if its raft server is running.