docs: protected void dataReady(FrameHeaderData headerData, PooledByteBuffer frameData) {
          if(anyAreSet(state, STATE_STREAM_BROKEN | STATE_CLOSED)) {
              frameData.close();
              return;
          }
          synchronized (lock) {
              boolean newData = pendingFrameData.isEmpty();
              this.pendingFrameData.add(new FrameData(headerData, frameData));
              if (newData) {
                  if (waiters > 0) {
                      lock.notifyAll();
                  }
              }
              waitingForFrame = false;
          }
          if (anyAreSet(state, STATE_READS_RESUMED)) {
              resumeReadsInternal(true);
          }
          if(headerData != null) {
              currentStreamSize += headerData.getFrameLength();
              if(maxStreamSize > 0 && currentStreamSize > maxStreamSize) {
                  handleStreamTooLarge();
              }
          }
      }