docs: @Override
      public ScheduledFuture<?> schedule(Topic topic, Map<?, ?> context, long delay, TimeUnit unit) {
          final EventEngine engine = this.eventSvc;
          final ScheduledExecutorService scheduler = this.execSvc;
          if (null == scheduler || null == engine) {
              throw new IllegalStateException("Service is not running");
          }
          if (null == topic) {
              throw new IllegalArgumentException("Missing topic");
          }
          Task task = new Task(topic, context, engine, CurrentEvent.get());
          return scheduler.schedule(task, delay, unit);
      }