text: import Enumerator from './enumerator';
  import {
      PENDING,
      FULFILLED,
      fulfill
  } from './-internal';
  
  const hasOwnProperty = Object.prototype.hasOwnProperty;
  
  export default class PromiseHash extends Enumerator {
      constructor(Constructor, object, abortOnReject = true, label) {
          super(Constructor, object, abortOnReject, label);
      }
  
      _init(Constructor, object) {
          this._result = {};
  
          this._enumerate(object);
          if (this._remaining === 0) {
              fulfill(this.promise, this._result);
          }
      }
  
      _enumerate(input) {
          let promise = this.promise;
          let results = [];
  
          for (let key in input) {
              if (hasOwnProperty.call(input, key)) {
                  results.push({
                      position: key,
                      entry: input[key]
                  });
              }
          }
  
          let length = results.length;
          this._remaining = length;
          let result;
  
          for (let i = 0; promise._state === PENDING && i < length; i++) {
              result = results[i];
              this._eachEntry(result.entry, result.position);
          }
      }
  }
  