Reminder that injected fields in a StepExecution implementation should generally be transient.
loadProgramFailed could be called from whatever thread, so the addThread to report the error must be rescheduled into the executor.