Fix 'firstSuccessful' recursion inside mask

Asynchronous exceptions are masked inside
the exception handler of catch. This patch
rewrites firstSuccessful to run actions
after the first attempt outside of the
masked continuation.