code: func (sw *StreamWatcher) receive() {
  	defer close(sw.result)
  	defer sw.Stop()
  	defer utilruntime.HandleCrash()
  	for {
  		action, obj, err := sw.source.Decode()
  		if err != nil {
  			// Ignore expected error.
  			if sw.stopping() {
  				return
  			}
  			switch err {
  			case io.EOF:
  				// watch closed normally
  			case io.ErrUnexpectedEOF:
  				klog.V(1).Infof("Unexpected EOF during watch stream event decoding: %v", err)
  			default:
  				if net.IsProbableEOF(err) {
  					klog.V(5).Infof("Unable to decode an event from the watch stream: %v", err)
  				} else {
  					sw.result <- Event{
  						Type:   Error,
  						Object: sw.reporter.AsObject(fmt.Errorf("unable to decode an event from the watch stream: %v", err)),
  					}
  				}
  			}
  			return
  		}
  		sw.result <- Event{
  			Type:   action,
  			Object: obj,
  		}
  	}
  }
docs: // receive reads result from the decoder in a loop and sends down the result channel.