code: func (r *proxyHandler) updateAPIService(apiService *apiregistrationapi.APIService) {
  	if apiService.Spec.Service == nil {
  		r.handlingInfo.Store(proxyHandlingInfo{local: true})
  		return
  	}
  
  	newInfo := proxyHandlingInfo{
  		name: apiService.Name,
  		restConfig: &restclient.Config{
  			TLSClientConfig: restclient.TLSClientConfig{
  				Insecure:   apiService.Spec.InsecureSkipTLSVerify,
  				ServerName: apiService.Spec.Service.Name + "." + apiService.Spec.Service.Namespace + ".svc",
  				CertData:   r.proxyClientCert,
  				KeyData:    r.proxyClientKey,
  				CAData:     apiService.Spec.CABundle,
  			},
  		},
  		serviceName:      apiService.Spec.Service.Name,
  		serviceNamespace: apiService.Spec.Service.Namespace,
  		servicePort:      apiService.Spec.Service.Port,
  		serviceAvailable: apiregistrationapi.IsAPIServiceConditionTrue(apiService, apiregistrationapi.Available),
  	}
  	if r.proxyTransport != nil && r.proxyTransport.DialContext != nil {
  		newInfo.restConfig.Dial = r.proxyTransport.DialContext
  	}
  	newInfo.proxyRoundTripper, newInfo.transportBuildingError = restclient.TransportFor(newInfo.restConfig)
  	if newInfo.transportBuildingError != nil {
  		klog.Warning(newInfo.transportBuildingError.Error())
  	}
  	r.handlingInfo.Store(newInfo)
  }
docs: // these methods provide locked access to fields