New Tests

Found another corner case that does not match the native implementation.

1. define an async listener
2. create a callback that throws
3. define another async listener

The callback's error should only propagate to the first listener.

I also added a test for similar behavior under non-error conditions; it passes!