docs: public void error(NetworkConnection vc, IOWriteRequestContext wrc, IOException t) {
         if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(this, tc, "error", new Object[]{vc, wrc, t});      // F176003, F184828
         if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled() && (t != null)) SibTr.exception(this, tc, t);                     // F176003
         if (connection.isLoggingIOEvents()) connection.getConnectionEventRecorder().logDebug("error method invoked on write context " + System.identityHashCode(wrc) + " with exception " + t);
         try {
            //Note that this also deals with the buffer returned by getBuffer.
            WsByteBuffer[] buffers;
            buffers = writeCtx.getBuffers();
            writeCtx.setBuffers(null);
  
            if (buffers != null) {
               for (WsByteBuffer buffer : buffers) {
                  try {
                     if (buffer != null) buffer.release();
                  } catch (RuntimeException e) {
                     //Absorb any exceptions if it gets released by another thread (for example by Connection.nonThreadSafePhysicalClose).
                     //No FFDC code needed
                     if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "Caught exception on releasing buffer.", e);
                  }
               }
            } else {
               if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "Request has no buffers: " + writeCtx);
            }
  
            // Deal with the error by invalidating the connection.  That'll teach 'em.
            final String message = "IOException received - " + t == null ? "" : t.getMessage();
            connection.invalidate(false, t, message);  // F176003, F224570
         } catch (Error error) {
            FFDCFilter.processException
                    (error, "com.ibm.ws.sib.jfapchannel.impl.ConnectionWriteCompletedCallback", JFapChannelConstants.CONNWRITECOMPCALLBACK_COMPLETE_01, connection.getDiagnostics(true));
            if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled()) SibTr.exception(this, tc, error);
  
            // It might appear slightly odd for this code to catch Error (especially since the JDK docs say
            // that Error means that something has gone so badly wrong that you should abandon all hope).
            // This code makes one final stab at putting out some diagnostics about what happened (if we
            // propagate the Error up to the TCP Channel, it is sometimes lost) and closing down the
            // connection.  I figured that we might as well try to do something - as we can hardly make
            // things worse... (famous last words)
  
            connection.invalidate(false, error, "Error caught in ConnectionWriteCompletedCallback.error()");
  
            // Re-throw the error to ensure that it causes the maximum devastation.
            // The JVM is probably very ill if an Error is thrown so attempt no recovery.
            throw error;
         } catch (RuntimeException runtimeException) {
            FFDCFilter.processException
                    (runtimeException, "com.ibm.ws.sib.jfapchannel.impl.ConnectionWriteCompletedCallback", JFapChannelConstants.CONNWRITECOMPCALLBACK_COMPLETE_05, connection.getDiagnostics(true));
            if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled()) SibTr.exception(this, tc, runtimeException);
  
            // We can reasonably try to recover from a runtime exception by invalidating the associated
            // connection.  This should drive the underlying TCP/IP socket to be closed.
            connection.invalidate(false, runtimeException, "RuntimeException caught in ConnectionWriteCompletedCallback.error()");
  
            // Don't throw the RuntimeException on as we risk blowing away part of the TCP channel.
         }
  
         if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "error");
      }