code: public void queueTask(Runnable task, Executor taskExecutor, long timeout, Runnable timeoutTask, boolean rejectOnSuspend) {
          controller.queueTask(this, task, taskExecutor, timeout, timeoutTask, rejectOnSuspend, false);
      }
docs: Queues a task to run when the request controller allows it. There are two use cases for this:
  <ol>
  <li>This allows for requests to be queued instead of dropped when the request limit has been hit</li>
  <li>Timed jobs that are supposed to execute while the container is suspended can be queued to execute
  when it resumes</li>
  </ol>
  <p>
  Note that the task will be run within the context of a {@link #beginRequest()} call, if the task
  is executed there is no need to invoke on the control point again.
  </p>
  
  
  @param task            The task to run
  @param timeout         The timeout in milliseconds, if this is larger than zero the task will be timed out after
  this much time has elapsed
  @param timeoutTask     The task that is run on timeout
  @param rejectOnSuspend If the task should be rejected if the container is suspended, if this happens the timeout task is invoked immediately