code: function _setImmediate(fn) {
      let args = Array.prototype.slice.call(arguments, 1);
      return new Promise(function(resolve, reject) {
          setImmediate(function() {
              try {
                  fn.apply(this, args);
              } catch(e) {
                  return reject(e);
              }
              resolve();
          });
      });
  }
docs: setImmediate which returns a Promise
  @return <Promise>