Request cooperative cancellation and wait for the worker to exit.
Result: stored in self (calling object)