THe async stuff is handled by the job executor. So if it fails, it's executed again (retied) for, by default, 3 times. THis is configurable in the configuration.
Can you manually retry (via API etc.) the task at a later time? (after all three retries have failed the process seems to wait at the task that failed)