Native undo/redo behavior for web
Undoer - simple way of restoring initial mutable object state if yielded logic raises specific errors