code: private void scheduleEmptyRequest(long delay) {
          assertLocked();
          if (delay < 0L) {
              throw(new IllegalArgumentException(
                      "Empty request delay must be >= 0 (was: " + delay + ")"));
          }
  
          clearEmptyRequest();
          if (!isWorking()) {
              return;
          }
          
          // Schedule the transmission
          if (LOG.isLoggable(Level.FINER)) {
              LOG.finer("Scheduling empty request in " + delay + "ms");
          }
          try {
              emptyRequestFuture = schedExec.schedule(emptyRequestRunnable,
                      delay, TimeUnit.MILLISECONDS);
          } catch (RejectedExecutionException rex) {
              LOG.log(Level.FINEST, "Could not schedule empty request", rex);
          }
          drained.signalAll();
      }
docs: Schedule an empty request to be sent if no other requests are
  sent in a reasonable amount of time.