code: func (s *Service) Submit(event interface{}) error {
  	defer func() {
  		// During shutdown, events may still be produced and we may
  		// get a 'send on closed channel' panic. Just log and ignore the error.
  		if p := recover(); p != nil {
  			logger.Warnf("panic while submitting event: %s", p)
  			debug.PrintStack()
  		}
  	}()
  
  	eventch, err := s.dispatcher.EventCh()
  	if err != nil {
  		return errors.WithMessage(err, "Error submitting to event dispatcher")
  	}
  	eventch <- event
  
  	return nil
  }
docs: // Submit submits an event for processing