@Override public void success(final P presenter) { // Everything should be bound before we prepare the presenter from the // request, // in case it wants to fire some events. That's why we will do this in a // deferred command. addDeferredCommand(() -> { PlaceRequest originalRequest = placeManager.getCurrentPlaceRequest(); presenter.prepareFromRequest(request); if (originalRequest == placeManager.getCurrentPlaceRequest()) { // User did not manually update place request in prepareFromRequest, update it here. placeManager.updateHistory(request, updateBrowserUrl); } NavigationEvent.fire(placeManager, request); if (!presenter.useManualReveal()) { // Automatic reveal manualReveal(presenter); } }); }