In recently i have to work with problem which recursively call asynchronous methods. I tried with differed object $.when.appy ; but with large number of calls this method didn't show any constant result. Therefore i used some call back function with to archive this task.
Here I'm a keeping a TrackCalls object to track async calls and their returns. If any error occurred loop will be stopped and notify.