src: support for catching nested async callbacks

Async listeners should now propagate through nested callbacks.

Note: This is NOT performance ready. It's simply getting the
functionality to work.
src: fix two syntax errors

First was an improper comparison with bool to int. Second was to "throw
error" instead of "throw new Error".
test: add concurrent async tests

Most the other tests only tested nested async callbacks. So added one
that tests running several concurrently.