 
     @_assert(!@_transient, 'Cannot redo while transient action active.')
 
-    @_run(@stack[@stack_idx], 'run')
+    action = @stack[@stack_idx]
+    @_run(action, 'run')
     ++@stack_idx
+
+    @trigger?('redo', action)
+    @onRedo?(action)
 
     return
 

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

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

    return


    @stack.splice(@stack_idx, Infinity)
    @stack.push action
    @stack_idx = @stack.length

    @trigger?("execute", action)
    @onExecute?(action)

    return

  _assert: (val, message) ->
