As mentioned in SERVLET_SPEC-17, we would like to clarify the behavior
when an AsyncListener throws an exception.
I suggest that if #onStartAsync, #onComplete and #onTimeout have
failures, then #onError should be called.
Then it will give a chance for the listener to clean up resources.
If #onError has an error, then we should logged the exception and mark
the request in error state.
Any comments?
Shing Wai Chan