function AbortablePromise(resolver) {
      if (typeof resolver !== "function") throw new Error("AbortablePromise needs a resolver function");

      var abort;
      var promise = new Promise(function (resolve, reject) {