Do we really want the onExit jobs to be executed at the same time? Wouldn't it be better to follow the golang defer model and respect the order?