     @stack.splice(@stack_idx, Infinity)
     @stack.push action
     @stack_idx = @stack.length
+
+    @trigger?("execute", action)
+    @onExecute?(action)
+
     return
 
   _assert: (val, message) ->

    @_assert(!@_transient, 'Cannot undo while transient action active.')

    --@stack_idx
    @_run(@stack[@stack_idx], 'undo')

    return



    @_assert(!@_transient, 'Cannot redo while transient action active.')

    action = @stack[@stack_idx]
    @_run(action, 'run')
    ++@stack_idx

    @trigger?('redo', action)
    @onRedo?(action)

    return

