docs: protected boolean determineIfThrottled(ThrottleState state) {
          final long prevUncommitted = lastUncommitted;
          lastUncommitted = state.uncommittedJournalEntries;
  
          final String transportName = this.getClass().getSimpleName();
          log.debug("Checking if transport {} should be throttled {}", transportName, state);
          if (state.uncommittedJournalEntries == 0) {
              // journal is completely empty, let's read some stuff
              log.debug("[{}] [unthrottled] journal empty", transportName);
              return false;
          }
          if (state.uncommittedJournalEntries > 100_000) {
              log.debug("[{}] [throttled] number of unread journal entries is larger than 100.000 entries: {}", transportName, state.uncommittedJournalEntries);
              return true;
          }
          if (state.uncommittedJournalEntries - prevUncommitted > 20_000) {
              // journal is growing, don't read more
              log.debug("[{}] [throttled] number of unread journal entries is growing by more than 20.000 entries: {}", transportName, state.uncommittedJournalEntries - prevUncommitted);
              return true;
          }
          if (state.processBufferCapacity == 0) {
              log.debug("[{}] [throttled] no capacity in process buffer", transportName);
              return true;
          }
          if (state.appendEventsPerSec == 0 && state.readEventsPerSec == 0 && state.processBufferCapacity > 0) {
              // no one writes anything, it's ok to get more events
              log.debug("[{}] [unthrottled] no incoming messages and nothing read from journal even if we could", transportName);
              return false;
          }
          if ((state.journalSize / (double) state.journalSizeLimit) * 100.0 > 90) {
              // more than 90% of the journal limit is in use, don't read more if possible to avoid throwing away data
              log.debug("[{}] [throttled] journal more than 90% full", transportName);
              return true;
          }
          if ((state.readEventsPerSec / (double) state.appendEventsPerSec) * 100.0 < 50) {
              // read rate is less than 50% of what we write to the journal over the last second, let's try to back off
              log.debug("[{}] [throttled] write rate is more than twice as high than read rate", transportName);
              return true;
          }
          log.debug("[{}] [unthrottled] fall through", transportName);
          return false;
      }