Hi vivek. I don't have any insight from previous experience or best practice to share, but a couple of things occurred to me so I thought I'd jot them down so you had some response until someone with real knowledge comes along 😀
Firstly, and I know it's not what you'll want to hear, but 24 hours for any (third party) task feels like an awfully long time. Does whatever this is really need to take that long? Is there any scope for optimisation there?
Secondly, from a peek at the "wait for an async call to complete" action, I can see the output from this step has a number of "count" values - Job succeeded, failed and timed out (see attached image below). Which immediately makes me think you could check the value of "Job timed out count" after the wait step.
If this is zero, you're good to continue, if not, could you just invoke another wait step (using the same job ids?) Or perhaps instead even just place your original wait step inside a REPEAT... WHILE block and only exit if "Job timed out count" = 0?
But if doing that I think I'd want to keep a count of how many times I'd been round the WAIT loop and exit with an error if that was more than a defined number (to prevent waiting forever)!
However, like I said, I have no real world experience of your scenario. But perhaps if I've speculated unwisely, this post might at least prompt someone more knowledgeable to post a correction! 🤣