docs: function monitorOneWorkerHelper(action, firstTimeoutInMs, worker) {
          logger.log('debug', 'M|worker-id=%d|%s', worker.id, action, meta);
          
          // 1) Create a Promise for this worker
          var deferred = Q.defer();
          workerQueue.add({
              "action"   : action,
              "state"    : "pending",
              "worker"   : worker,
              "deferred" : deferred,
              "timeout"  : schedule(worker, firstTimeoutInMs, function(worker, timeoutInMs) {
                  logger.log('debug', 'M|worker-id=%d|%s|first-timeout', worker.id, action);
                  
                  // 1.1) If the worker did not change state within "firstTimeoutInMs",
                  //      KILL it and let the Observer deal with either Resolving or
                  //      Rejected depening if we where Starting or Stopping.
                  //      (e.g. if we were stopping and it did not respond to the
                  //            disconnect, but the kill worked, then the Stop Action
                  //            would still be a success. However, if we were starting
                  //            and the kill worked, it should NOT be a success!)
                  workerQueue.execute(worker.id, function (err, node, next) {
                      logger.log('warn', 'M|worker-id=%d|%s|not-responding|SIGKILL|worker did not %s in %s secs.', node.worker.id, action, action, (timeoutInMs /1000), meta);
                      node.worker.process.kill('SIGKILL');
                      node.timeout = schedule(worker, savedConfig.stopTimeoutInMs, function(worker, timeoutInMs) {
                          logger.log('debug', 'M|worker-id=%d|%s|second-timeout', worker.id, action);
                          
                          // 1.2) If the worker did not DIE when we killed it, the
                          //      whole Enging is in a bad state, we have to reject
                          //      the Promise and ... Notify the "main application"
                          //      that started the server to let it decice what to
                          //      do (e.g. exit and let the OS restart?!)
                          workerQueue.execute(worker.id, function (err, node, next) {
                              logger.log('error', 'M|worker-id=%d|%s|not-responding|REJECT|worker did not die in %s secs.**************************************************', node.worker.id, action, (timeoutInMs /1000), meta);
                              nextState(states.error, node.worker.id); // 'M|worker-id=' + node.worker.id + '|monitorOneWorkerHelper|' + action +'|TIMEOUT|on=kill', 
                              node.deferred.reject(new Error('Unable to ' + action  + ' worker-id ' + node.worker.id + '.'));
                              
                              // 1.3) Notify the WorkerQueue that this worker
                              //      node has been processed and should not
                              //      be reinsterted into the queue.
                              return null;
                          });
                      });
                      
                      // 1.4) Notify the WorkerQueue that this worker
                      //      node is still active and should be reinserted
                      //      into the queue.
                      return node;
                  });
              })
          });
          
          // 2) return the promise
          return deferred.promise;
      }