Ok. Let's leave it as is.
Damn. I'm halfway through such a rewrite :P
This seems like your halfway to an async/await style system. The multithread callbacks have a lot of issues with nesting if you use lambdas not promises, and captures will cause problems regardless.