code: func newWorker(
  	m *manager,
  	probeType probeType,
  	pod *v1.Pod,
  	container v1.Container) *worker {
  
  	w := &worker{
  		stopCh:       make(chan struct{}, 1), // Buffer so stop() can be non-blocking.
  		pod:          pod,
  		container:    container,
  		probeType:    probeType,
  		probeManager: m,
  	}
  
  	switch probeType {
  	case readiness:
  		w.spec = container.ReadinessProbe
  		w.resultsManager = m.readinessManager
  		w.initialValue = results.Failure
  	case liveness:
  		w.spec = container.LivenessProbe
  		w.resultsManager = m.livenessManager
  		w.initialValue = results.Success
  	}
  
  	basicMetricLabels := prometheus.Labels{
  		"probe_type": w.probeType.String(),
  		"container":  w.container.Name,
  		"pod":        w.pod.Name,
  		"namespace":  w.pod.Namespace,
  		"pod_uid":    string(w.pod.UID),
  	}
  
  	w.proberResultsSuccessfulMetricLabels = deepCopyPrometheusLabels(basicMetricLabels)
  	w.proberResultsSuccessfulMetricLabels["result"] = probeResultSuccessful
  
  	w.proberResultsFailedMetricLabels = deepCopyPrometheusLabels(basicMetricLabels)
  	w.proberResultsFailedMetricLabels["result"] = probeResultFailed
  
  	w.proberResultsUnknownMetricLabels = deepCopyPrometheusLabels(basicMetricLabels)
  	w.proberResultsUnknownMetricLabels["result"] = probeResultUnknown
  
  	return w
  }
docs: // Creates and starts a new probe worker.