When are Active Objects upgrade tasks re-attempted?

Under what conditions will an Active Objects upgrade task be re-attempted the next time a plugin is updated?

If my upgrade task:
(1) Throws an unchecked exception within the upgrade method
(2) Throws and catches a checked exception within the upgrade method
(3) Performs an early void return from the upgrade method before it is complete

Then under which situation(s) (1, 2, or 3) will the model version not be updated and the upgrade task will be re-attempted on next plugin update?

I have a vague recollection of skimming some server developer documentation that stated they will be re-attempted if an exception is thrown. However, I cannot reliably find this piece of info so here I am on CDAC.

Many thanks in advance for any answers!