docs: protected int grabFlowControlBytes(int toSend) {
          synchronized (flowControlLock) {
              if (toSend == 0) {
                  return 0;
              }
              int newWindowSize = this.getChannel().getInitialSendWindowSize();
              int settingsDelta = newWindowSize - this.initialWindowSize;
              //first adjust for any settings frame updates
              this.initialWindowSize = newWindowSize;
              this.flowControlWindow += settingsDelta;
  
              int min = Math.min(toSend, this.flowControlWindow);
              int actualBytes = this.getChannel().grabFlowControlBytes(min);
              this.flowControlWindow -= actualBytes;
              return actualBytes;
          }
      }