code: @Override
      public VirtualConnection finishRawResponseMessage(WsByteBuffer[] body, InterChannelCallback cb, boolean bForce) throws MessageSentException {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.entry(tc, "finishRawResponseMessage(async)");
          }
          setRawBody(true);
          VirtualConnection vc = finishResponseMessage(body, cb, bForce);
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.exit(tc, "finishRawResponseMessage(async): " + vc);
          }
          return vc;
      }
docs: Finish sending the response message asynchronously. The body buffers can
  be null if there is no more actual body. This method will avoid any
  body modifications, such as compression or chunked-encoding. If the
  headers have not been sent yet, then they will be prepended to the input
  data.
  <p>
  If the asynchronous write can be done immediately, then this will return a
  VirtualConnection and the caller's callback will not be used. If this
  returns null, then the callback will be used when complete.
  <p>
  The force flag allows the caller to force the asynchronous communication
  such that the callback is always used.
  
  @param body
  -- null if there is no more body data
  @param cb
  @param bForce
  @return VirtualConnection
  @throws MessageSentException
  -- if a finishMessage API was already used