I had thought about creating a promise internally but I think I want this to be very obvious that the undoManager accepts promises and return promises; forcing a user of the undoManager to create the promise does helps enforce.

Is there a best way to detect a promise? I was originally checking for the presence of a ```then``` function.