code: public void reset(final Throwable cause) {
          if (cause == null) {
              throw new NullPointerException("cause must not be null in AbstractBridgeSession.reset");
          }
          if (!isIoAligned() || getIoThread() == Thread.currentThread()) {
              reset0(cause);
          }
          else {
              getIoExecutor().execute(new Runnable() {
                  @Override
                  public void run() {
                      reset0(cause);
                  }
  
              });
          }
      }
docs: Behave similarly to connection reset by peer at NIO layer. This method should be called
  from handlers' exceptionCaught method instead of calling fireExceptionCaught and
  IoProcessor.remove, because the latter will fail if we're not on its IO thread.
  @param cause