code: function TrojanHorsePromise(callback) {
    var
      $callback = Object,
      $errback = Object
    ;
    function resolve(result) { $callback(result); }
    function reject(error) { $errback(error); }
    setTimeout(callback, 0, resolve, reject);
    return {
      then: function (callback, errback) {
        $callback = callback;
        if (errback) this.catch(errback);
      },
      catch: function (errback) {
        $errback = errback;
      }
    };
  }
docs: [WARNING]  this is a fallback for old QTWebKit and specific to make basic trojan-horse actions work. this is NOT a spec compliant Promise polyfill.