unref to a node when it is removed
undo/redo with promise
disable undo/redo button until async undo/redo finish
remove `console.log`