Profiling real-world Node code is extremely difficult. It's very hard to track which CPU cycles were used by what. Callbacks can execute in any order, and the call stack gets destroyed each time you have an async break in your code. async-profile is a new Node CPU profiler that doesn't have these problems. It's the first of its kind, and tracks the flow of your code through continuations, callbacks and promises, and accurately counts how much CPU time is used where.