@Override
  public boolean awaitTermination(long timeout, @NotNull TimeUnit unit) throws InterruptedException {
    if (!isShutdown()) {
      throw new IllegalStateException("must await termination after shutdown() or shutdownNow() only");
    }
    // the purpose of this complicated machinery below is to guarantee no task crash with "pool already shutdown" during transfer to getBackendBoundedExecutor() in AppDelayQueue.scheduledToPooledTransferrer loop
    long deadline = System.nanoTime() + unit.toNanos(timeout);
    try {
      // wait for backendExecutorService.shutdown() (in onDelayQueuePurgedOnShutdown()) to be able to call backendExecutorService.awaitTermination()
      myLaxativePill.get(deadline - System.nanoTime(), TimeUnit.NANOSECONDS);
    }
    catch (TimeoutException e) {
      return false;
    }
    catch (ExecutionException | CancellationException ignored) {
    }

    List<MyScheduledFutureTask<?>> tasks = getMyTasksFromDelayQueue();
    for (MyScheduledFutureTask<?> task : tasks) {
      try {
        task.get(deadline - System.nanoTime(), TimeUnit.NANOSECONDS);
      }
      catch (ExecutionException | CancellationException ignored) {
      }
      catch (TimeoutException e) {
        return false;
      }
    }
    delayQueue.removeAll(tasks);

    return backendExecutorService.awaitTermination(deadline - System.nanoTime(), TimeUnit.NANOSECONDS);
  }
@Override
  public boolean awaitTermination(long timeout, @NotNull TimeUnit unit)