code: @Override
      public void sessionIdle(NextFilter nextFilter, IoSession session,
              IdleStatus status) throws Exception {
          ProxyIoSession proxyIoSession = (ProxyIoSession) session
                  .getAttribute(ProxyIoSession.PROXY_SESSION);
          proxyIoSession.getEventQueue().enqueueEventIfNecessary(
                  new IoSessionEvent(nextFilter, session, status));
      }
docs: Event is stored in an {@link IoSessionEventQueue} for later delivery to the next filter
  in the chain when the handshake would have succeed. This will prevent the rest of
  the filter chain from being affected by this filter internals.
  
  @param nextFilter the next filter in filter chain
  @param session the session object