Catch and handle Errors raised by PromiseListeners in SettablePromiseImpl

Catch and handle Errors raised by PromiseListeners in SettablePromiseImpl

When a settable promise has been resolved we notify all listeners and
then wake up any waiting threads by counting down on the _awaitLatch.
However, if one of the listeners raised an Error (not Exception) it
would skip subsequent listeners and count down on the _awaitLatch. This
change ensures that Errors are caught and do not abnormally terminal
notifications during SettablePromiseImpl's resolution.

@chikit