code: @Override
      public void asynchronousException(ConsumerSession session, Throwable e) {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(tc, "asynchronousException",
                          new Object[]
                          {
                           session,
                           e
                          });
  
          FFDCFilter.processException(e,
                                      CLASS_NAME + ".asynchronousException",
                                      CommsConstants.SERVERSICORECONNECTIONLISTENER_ASYNC_01,
                                      this);
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
              SibTr.debug(tc, "Caught an async exception:", e);
  
          try {
              sendMeNotificationEvent(CommsConstants.EVENTID_ASYNC_EXCEPTION, null, session, e);
          } catch (SIException e2) {
              FFDCFilter.processException(e,
                                          CLASS_NAME + ".asynchronousException",
                                          CommsConstants.SERVERSICORECONNECTIONLISTENER_ASYNC_02,
                                          this);
  
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  SibTr.debug(tc, e.getMessage(), e);
  
              SibTr.error(tc, "COMMUNICATION_ERROR_SICO2018", e);
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(tc, "asynchronousException");
      }
docs: This event is generated if an exception is thrown during the processing of
  an asynchronous callback. In practise this should never occur as we should
  ensure that we catch all the errors in the place they occur as no state
  is available here.
  
  @param session
  @param e