Incidentally, what is the rationale behind guaranteeing running the success/failure callbacks from the backend thread? Is that to contain any possible exceptions so they don't bleed from the on_success/on_failure methods? Or is it because of order of execution and/or fairness?