docs: @Override
      public VirtualConnection sendResponseHeaders(InterChannelCallback callback, boolean bForce) throws MessageSentException {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.entry(tc, "sendResponseHeaders(async)");
          }
          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 + ".sendResponseHeaders", "639");
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Attempt to send response without a request msg");
              }
              callback.error(getVC(), ioe);
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
                  Tr.exit(tc, "sendReponseHeaders(async): no request");
              }
              return null;
          }
  
          if (headersSent()) {
              throw new MessageSentException("Message already sent");
          }
  
          setForceAsync(bForce);
          setAppWriteCallback(callback);
          VirtualConnection vc = sendHeaders(getResponseImpl(), HttpISCWriteCallback.getRef());
          if (null != vc) {
              // Note: if forcequeue is true, then we will not get a VC object as
              // the lower layer will use the callback and return null
              if (getResponseImpl().isTemporaryStatusCode()) {
                  // allow multiple temporary responses to be sent
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                      Tr.debug(tc, "Temp response sent, resetting send flags.");
                  }
                  resetWrite();
              }
          }
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.exit(tc, "sendResponseHeaders(async): " + vc);
          }
          return vc;
      }