So, at first you claim there is clean way to do it, but then you admit nobody is doing it the clean way?
That sounds a bit strange, doesn't it?
I think the reality is that there simply is no pattern to escape callback-hell in complex evented applications. Or why else would everybody still be writing the same spaghetti-code with the logic scattered over at least two callbacks (success/errBack) per unit of work?
I'd go as far and claim the spaghetti-pattern is inherent to evented programming, unless you wrap it all up in something sane like co-routines.