What happened to retry from version 1.210?
In addition, the exit from sub run exits with a exit(0) instead of the exit code of the run_on_start. Exiting with the exit code of run_on_start would see to be what is more useful.
Something like
exit($self->{run_on_start}->($self));