code: @Override
      public void sendRequestBody(WsByteBuffer[] body) throws IOException, MessageSentException {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.entry(tc, "sendRequestBody(sync)");
          }
  
          if (isMessageSent()) {
              throw new MessageSentException("Message already sent");
          }
  
          // if headers haven't been sent, set for partial body transfer
          if (!headersSent()) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Setting partial body true");
              }
              setPartialBody(true);
          }
  
          getLink().setAllowReconnect(true);
          try {
              sendOutgoing(body, getRequestImpl());
          } catch (IOException e) {
              // no FFDC necessary
              reConnect(e);
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.exit(tc, "sendRequestBody(sync)");
          }
      }
docs: Send the given body buffers for the outgoing request synchronously.
  If chunked encoding is set, then each call to this method will be
  considered a "chunk" and encoded as such. If the message is
  Content-Length defined, then the buffers will simply be sent out with no
  modifications.
  
  Note: if headers have not already been sent, then the first call to
  this method will send the headers.
  
  @param body
  @throws IOException
  -- if a socket error occurs
  @throws MessageSentException
  -- if a finishMessage API was already used