public <E> void dispatchEvent (Signal<E> signal, E event) {
    try {
      signal.emit(event);
    } catch (Throwable cause) {
      reportError("Event dispatch failure", cause);
    }
  }
public < E > void dispatchEvent ( Signal < E > signal , E event ) { try { signal . emit ( event ) ; } catch ( Throwable cause ) { reportError ( "Event dispatch failure" , cause ) ; } }
Dispatches {@code event} on {@code signal} and catches any error that propagates out of the
event dispatch, reporting it via {@link #reportError}.