> I can't think of an obvious, clean way to do this with callbacks that doesn't go a long way toward simply re-implementing promises.
I may be misunderstanding your point, but you could name the callback function, and give the function object itself a "cancel()" method which alters its behavior to do nothing.