code: @Override
      public VirtualConnection sendRawRequestBody(WsByteBuffer[] body, InterChannelCallback callback, boolean bForce) throws MessageSentException {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.entry(tc, "sendRawRequestBody(async)");
          }
          setRawBody(true);
          VirtualConnection vc = sendRequestBody(body, callback, bForce);
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.exit(tc, "sendRawRequestBody(async): " + vc);
          }
          return vc;
      }
docs: Send an array of raw body buffers out asynchronously. This method will
  avoid any body modifications, such as compression or chunked-encoding.
  <p>
  This will return null if the data is being written asynchronously and the provided callback will be used when finished. However, if the write could complete automatically,
  then the callback will not be used and instead a non-null VC will be returned back.
  <p>
  The force parameter allows the caller to force the asynchronous call and to always have the callback used, thus the return code will always be null.
  
  @param body
  @param callback
  @param bForce
  @return VirtualConnection
  @throws MessageSentException
  -- if a finishMessage API was already used