I'm curious why you are updating the buffered diff *after* calling the backbone set function instead of before.  When are event handlers called?  It seems that it would make sense to set the buffered diff before, or at least when the changedAttributes info is updated.