code: func (vac ValidationAuthorityGRPCClient) PerformValidation(ctx context.Context, domain string, challenge core.Challenge, authz core.Authorization) ([]core.ValidationRecord, error) {
  	req, err := argsToPerformValidationRequest(domain, challenge, authz)
  	if err != nil {
  		return nil, err
  	}
  	gRecords, err := vac.gc.PerformValidation(ctx, req)
  	if err != nil {
  		return nil, err
  	}
  	records, prob, err := pbToValidationResult(gRecords)
  	if err != nil {
  		return nil, err
  	}
  	if prob != nil {
  		return records, prob
  	}
  
  	// We return nil explicitly to avoid "typed nil" problems.
  	// https://golang.org/doc/faq#nil_error
  	return records, nil
  }
docs: // PerformValidation has the VA revalidate the specified challenge and returns
  // the updated Challenge object.