This is cool - you've effectively created a cancelable Future. You may want to think about creating a general class for that (as a separate CL). I think it would be generally useful, and would simplify the code for places that needed that functionality.