docs: public void perform(final TaskRequest req, final TaskResponse res) {
      	
          final ExecutorService executorService = (ExecutorService) executorServicePhrase.evaluate(req, res);
          final boolean failFast = Boolean.parseBoolean((String) this.failFastPhrase.evaluate(req, res));
          
          // Copy all attributes into the response to ensure changes to higher level request objects don't
          // break execution of child tasks.
          final Map<String, Object> attributes = req.getAttributes();
          for (final Map.Entry<String, Object> attributeEntry : attributes.entrySet()) {
              res.setAttribute(attributeEntry.getKey(), attributeEntry.getValue());
          }
          
          
          //Submit the sub-tasks to the thread pool
          executorService.submit(new Runnable() {
              public void run() {
                  try {
                      ConcurrentTask.this.performSubtasks(req, res);
                  }
                  catch (Throwable t) {
                      if (failFast) {
                          //We want this as close to the top of the catch as possible so the pool is shutdown as soon as possible
                          executorService.shutdown();
                          if (executorService instanceof ThreadPoolExecutor) {
                              ((ThreadPoolExecutor)executorService).getQueue().clear();
                          }
                          log.debug("Shut down ExecutorService due to exception from ConcurrentTask subtask");
                      }
                      
                      final String msg;
                      if (failFast) {
                          msg = " The parent ExecutorService has been shutdown since fail-fast was set to true";
                      }
                      else {
                          msg = " Conccurent execution will continue.";
                      }
                      log.error("Exception thrown while performing subtask in its own thread." + msg, t);
                  }
              }
          });
          
      }