docs: @Override
      public VirtualConnection sendRequestHeaders(InterChannelCallback callback, boolean bForce) throws MessageSentException {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.entry(tc, "sendRequestHeaders(async)");
          }
          if (headersSent()) {
              throw new MessageSentException("Headers already sent");
          }
  
          setPartialBody(true);
          getLink().setAllowReconnect(true);
          setForceAsync(bForce);
          setAppWriteCallback(callback);
          VirtualConnection vc = sendHeaders(getRequestImpl(), HttpOSCWriteCallback.getRef());
          // 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 (null != vc && shouldReadResponseImmediately()) {
              // write worked already and we need to read the response headers now
              vc = startResponseRead();
          }
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.exit(tc, "sendRequestHeaders(async): " + vc);
          }
          return vc;
      }