One of reasons I use async.js is to avoid long nesting of function calls.
Recently, I had the need to remove the nextTick() call from waterfall. The reason for this was that one function was getting some input from the user which required clicking a "Submit" button , and the next one was attempting to login on Facebook. The Facebook login pop-up was getting blocked by Safari, since nextTick() make the blocker consider that the pop-up was not appearing in response to a user action (the click on the Submit button).
I've fixed the problem by simply removing the nextTick call, but if more people are interested, I can implement a more elegant solution. What would be the best way to do this? A new syncWaterfall() function? A third parameter being passed to waterfall() and series()?
I got bitten by this, and would be interested in a fix. There's no reason to defer any processing in waterfall to a subsequent tick, and its quite confusing given that async.series doesn't use nextTick.