code: public synchronized void addHttpContent(HttpContent httpContent) {
          contentObservable.notifyAddListener(httpContent);
          if (messageFuture != null) {
              if (ioException != null) {
                  blockingEntityCollector.addHttpContent(new DefaultLastHttpContent());
                  messageFuture.notifyMessageListener(blockingEntityCollector.getHttpContent());
                  removeMessageFuture();
                  throw new RuntimeException(this.getIoException());
              }
              contentObservable.notifyGetListener(httpContent);
              blockingEntityCollector.addHttpContent(httpContent);
              if (messageFuture.isMessageListenerSet()) {
                  messageFuture.notifyMessageListener(blockingEntityCollector.getHttpContent());
              }
              // We remove the feature as the message has reached it life time. If there is a need
              // for using the same message again, we need to set the future again and restart
              // the life-cycle.
              if (httpContent instanceof LastHttpContent) {
                  removeMessageFuture();
              }
          } else {
              if (ioException != null) {
                  blockingEntityCollector.addHttpContent(new DefaultLastHttpContent());
                  throw new RuntimeException(this.getIoException());
              } else {
                  blockingEntityCollector.addHttpContent(httpContent);
              }
          }
      }
docs: Add http content to HttpCarbonMessage.
  
  @param httpContent chunks of the payload.