Task_copy.on_kill() should probably be killing the underlying process, but
I think it's fuzzy where the exception gets thrown. I think the intention
is for the exception to get caught in that same block, so the cleanup can
happen, but this is not the case since it is thrown in the main thread. I
think the behavior depends a little bit on which executor you use. We
probably need to think about the right behavior here that works for a
variety of executors. SystemExit works for things that don't use
subprocess, but I'm not sure what the behavior for cleanup is when running
subprocess.