Desfazer Refazer para Fabric.js

Estou tentando adicionar a funcionalidade desfazer / refazer à minha tela do Fabric.js. Minha idéia é ter um contador que conte as modificações da tela (agora conta a adição de objetos). Eu tenho uma matriz de estado, que envia a tela inteira como JSON para minha matriz.

Então eu simplesmente quero recordar os estados com

canvas.loadFromJSON(state[state.length - 1 + ctr],

À medida que o usuário clica em desfazer, o ctr será reduzido em um e carregará o estado fora da matriz; À medida que o usuário clicar em refazer, o ctr aumentará em um e carregará o estado fora da matriz.

Quando experimento isso com números simples, tudo funciona bem. Com a tela de tecido real, eu tenho alguns problemas -> realmente não funciona. Eu acho que isso depende do meu manipulador de eventos

canvas.on({
   'object:added': countmods
});

jsfiddle é aqui:

Aqui está o único exemplo de números úteis (os resultados podem ser encontrados no console):jsFiddle

questionAnswers(5)

yourAnswerToTheQuestion