load exc_info on demand to provide compatibility with .result behavior
first deal with exception, then mark job as failed (to prevent race)
move exc_info storing to unify exception handling
move exc_info storing to unify exception handling
expire exception results just like regular results