There are a ton of libraries that help with fixing the layers of callback syndrome.
In fact, there\'s too many, which one do i use?
The problem I have with other sync libraries is they often required me to define all my tasks at the start, and did not offer a clean intuitive API I found. I simply just wanted to push tasks to a group, whenever and whereever, and then execute that group in either parallel or serial fashion.
I love the flow functionality inside TaskGroup, and used it for a lot of big projects including DocPad and BugHerd. Examples are in the README.