code: @Override
      public void error(VirtualConnection vc, Throwable t) {
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())    
              Tr.debug(tc, "error callback called , WriteListener enabled: " + this._wl); 
  
          // reset the reqState
          WebContainerRequestState reqState = WebContainerRequestState.getInstance(true);                         
          reqState.init();  
  
          synchronized(_hout._writeReadyLockObj){
              // Make sure the ready is set to true before calling onError
              _hout.set_internalReady(true);            
              _hout.setWriteReady(true);   
              reqState.setAttribute("com.ibm.ws.webcontainer.AllowWriteFromE", true); 
              reqState.setAttribute("com.ibm.ws.webcontainer.WriteAllowedonThisThread", true);
          }
          
          SRTServletRequestThreadData.getInstance().init(_requestDataAsyncWriteCallbackThread);
          
          //Push the original thread's context onto the current thread, also save off the current thread's context
          tcm.pushContextData();
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()){  
              Tr.debug(tc, "WriteListener enabled: " + this._wl +" , calling user's onError : " + vc );            
          }       
          try{  
              synchronized(_hout) {
                  //An error occurred. Issue the onError call on the user's WriteListener
                  _wl.onError(t);
              }
              
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()){  
                  Tr.debug(tc, "WriteListener enabled: " + this._wl +" , returned from user's onError : " + vc );            
              }  
          } catch (Exception e) {
               
              Tr.error(tc, "writeListener.onError.failed", new Object[] {this._wl, e.toString()});
              
          }
          finally{
  
              tcm.popContextData();//Revert back to the thread's current context
  
              reqState.removeAttribute("com.ibm.ws.webcontainer.AllowWriteFromE");
          }
      }
docs: /* (non-Javadoc)
  @see com.ibm.wsspi.channelfw.InterChannelCallback#error(com.ibm.wsspi.channelfw.VirtualConnection, java.lang.Throwable)