code: func (eventBroadcaster *eventBroadcasterImpl) StartRecordingToSink(sink EventSink) watch.Interface {
  	// The default math/rand package functions aren't thread safe, so create a
  	// new Rand object for each StartRecording call.
  	randGen := rand.New(rand.NewSource(time.Now().UnixNano()))
  	eventCorrelator := NewEventCorrelatorWithOptions(eventBroadcaster.options)
  	return eventBroadcaster.StartEventWatcher(
  		func(event *v1.Event) {
  			recordToSink(sink, event, eventCorrelator, randGen, eventBroadcaster.sleepDuration)
  		})
  }
docs: // StartRecordingToSink starts sending events received from the specified eventBroadcaster to the given sink.
  // The return value can be ignored or used to stop recording, if desired.
  // TODO: make me an object with parameterizable queue length and retry interval