code: function (action, payload) {
          var scope = this,
              instruction = this.pool.create(action, payload, _.slice(arguments, 2));
  
          // we directly execute this instruction instead od queueing it.
          setTimeout(function () {
              // we do not have callback, hence we send _.noop. we could have had made callback in .execute optional, but
              // that would suppress design-time bugs in majority use-case and hence we avoided the same.
              instruction.execute(_.noop, scope);
          }, 0);
  
          return instruction;
      }
docs: eslint-disable-next-line jsdoc/check-param-names 
  Suspends current instruction and executes the given instruction.
  
  This method explicitly chooses not to handle errors, to allow the caller to catch errors and continue execution
  without terminating the instruction queue. However, it is up to the caller to make sure errors are handled,
  or it will go unhandled.
  
  @param {String} action
  @param {Object} payload
  @param {*} [args...]