docs: public static XnioExecutor.Key executeAfter(XnioIoThread thread, Runnable task, long timeout, TimeUnit timeUnit) {
          try {
              return thread.executeAfter(task, timeout, timeUnit);
          } catch (RejectedExecutionException e) {
              if(thread.getWorker().isShutdown()) {
                  UndertowLogger.ROOT_LOGGER.debugf(e, "Failed to schedule task %s as worker is shutting down", task);
                  //we just return a bogus key in this case
                  return new XnioExecutor.Key() {
                      @Override
                      public boolean remove() {
                          return false;
                      }
                  };
              } else {
                  throw e;
              }
          }
      }