You need to forget the whole programming exit thing. It is not needed for this kind of simple scenario, and it might not even work properly at all (you are trying to complete the work item while it is still being processed). Remove it.
So, you have a simple step which has a job of getting some data (email address etc.). Just make sure that the task if set as background and synchronous (in transaction PFTC). A simple background task executes the method and completes automatically. There is no need to completely by yourself by some trick.
Regards,
Karri