Retrying an Async Operation on Failure