@Override public void success(final T presenter) { // Deferring is needed because the event bus enqueues and delays handler // registration when events are currently being processed. // (see {@link com.google.gwt.event.shared.HandlerManager@addHandler()}) // So if a presenter registers a handler in its onBind() method and a // child fires the event in its onReveal() method, then the event might // get lost because the handler is not officially registered yet. Scheduler.get().scheduleDeferred(() -> { presenter.forceReveal(); presenter.setInSlot(event.getAssociatedType(), event.getContent()); }); } });