here's another suggestion, you might be able to get benefit from callbacks. and by that I mean if for instance this is a persist call, at the time of receiving postpersist, if user has initiated a cancel you then kick off a rollback of that persist,
I'm not quit sure if it works, but worth trying