docs: @SuppressWarnings({"unchecked", "rawtypes"})
      protected void markReadsBroken(Throwable cause) {
          if (readsBrokenUpdater.compareAndSet(this, 0, 1)) {
              if(UndertowLogger.REQUEST_IO_LOGGER.isDebugEnabled()) {
                  UndertowLogger.REQUEST_IO_LOGGER.debugf(new ClosedChannelException(), "Marking reads broken on channel %s", this);
              }
              if(receiver != null) {
                  receiver.markStreamBroken();
              }
              for(AbstractFramedStreamSourceChannel<C, R, S> r : new ArrayList<>(getReceivers())) {
                  r.markStreamBroken();
              }
  
              handleBrokenSourceChannel(cause);
              safeClose(channel.getSourceChannel());
              closeSubChannels();
          }
      }