code: public StreamSourceChannel getRequestChannel() {
          if (requestChannel != null) {
              if(anyAreSet(state, FLAG_REQUEST_RESET)) {
                  state &= ~FLAG_REQUEST_RESET;
                  return requestChannel;
              }
              return null;
          }
          if (anyAreSet(state, FLAG_REQUEST_TERMINATED)) {
              return requestChannel = new ReadDispatchChannel(new ConduitStreamSourceChannel(Configurable.EMPTY, new EmptyStreamSourceConduit(getIoThread())));
          }
          final ConduitWrapper<StreamSourceConduit>[] wrappers = this.requestWrappers;
          final ConduitStreamSourceChannel sourceChannel = connection.getSourceChannel();
          if (wrappers != null) {
              this.requestWrappers = null;
              final WrapperConduitFactory<StreamSourceConduit> factory = new WrapperConduitFactory<>(wrappers, requestWrapperCount, sourceChannel.getConduit(), this);
              sourceChannel.setConduit(factory.create());
          }
          return requestChannel = new ReadDispatchChannel(sourceChannel);
      }
docs: Get the inbound request.  If there is no request body, calling this method
  may cause the next request to immediately be processed.  The {@link StreamSourceChannel#close()} or {@link StreamSourceChannel#shutdownReads()}
  method must be called at some point after the request is processed to prevent resource leakage and to allow
  the next request to proceed.  Any unread content will be discarded.
  
  @return the channel for the inbound request, or {@code null} if another party already acquired the channel