The callback should be called by the executor thread, and only if the cancel actually worked. If you call cancel and it doesn't cancel, no callback should happen.

(Does anyone need to differentiate between cancelled and failed?)