I'm willing to let a promise update the label with something more specific to describe the operation. In most cases we keep the label pretty generic Undo "Set Color" vs Undo "Set Color to Red" but there may be a reason to change the label.

Other frameworks usually offer a way to simply set the label of the top-most undo entry. Our approach seems a bit more flexible given the asynchronous nature.

I would have moved the label as an optional last parameter but of course we collect any trailing args as arguments and I didn't want a mandatory last parameter of label or null. Any thoughts?