docs: private void createTimeout(IAbstractAsyncFuture future, long delay, boolean isRead) {
          if (AsyncProperties.disableTimeouts) {
              return;
          }
          // create the timeout time, while not holding the lock
          long timeoutTime =
                          (System.currentTimeMillis() + delay + Timer.timeoutRoundup)
                                          & Timer.timeoutResolution;
  
          synchronized (future.getCompletedSemaphore()) {
              // make sure it didn't complete while we were getting here
              if (!future.isCompleted()) {
                  timer.createTimeoutRequest(timeoutTime, this.callback, future);
              }
          }
      }