docs: @Override
      public VirtualConnection sendResponseBody(WsByteBuffer[] body, InterChannelCallback callback, boolean bForce) throws MessageSentException {
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
              Tr.debug(tc, "sendResponseBody(body,cb)");
          }
          if (!headersParsed()) {
              // request message must have the headers parsed prior to sending
              // any data out (this is a completely invalid state in the channel
              // above)
              IOException ioe = new IOException("Request not read yet");
              FFDCFilter.processException(ioe, CLASS_NAME + ".sendResponseBody", "746");
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Attempt to send response without a request msg");
              }
              callback.error(getVC(), ioe);
              return null;
          }
  
          if (isMessageSent()) {
              throw new MessageSentException("Message already sent");
          }
  
          // if headers haven't been sent, then set for partial body transfer
          if (!headersSent()) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "sendBody(cb) setting partial body true");
              }
              setPartialBody(true);
          }
  
          setForceAsync(bForce);
          setAppWriteCallback(callback);
          // Note: if forcequeue is true, then we will not get a VC object as
          // the lower layer will use the callback and return null
          return sendOutgoing(body, getResponseImpl(), HttpISCWriteCallback.getRef());
      }