lib/reflect.js
function() {
    var trap = this.getTrap("iterate");
    if (trap === undefined) {
      // default forwarding behavior
      return Reflect.iterate(this.target);
    }

    var trapResult = trap.call(this.handler, this.target);

    if (Object(trapResult) !== trapResult) {
      throw new TypeError("iterate trap should return an iterator object, "+
                          "got: "+ trapResult);
    }
    return trapResult;
  }
function() {
    var trap = this.getTrap("iterate");
    if (trap === undefined) {
      // default forwarding behavior
      return Reflect.iterate(this.target);
    }

    var trapResult = trap.call(this.handler, this.target);

    if (Object(trapResult) !== trapResult) {
      throw new TypeError("iterate trap should return an iterator object, "+
                          "got: "+ trapResult);
    }
    return trapResult;
  }
The iterate trap should return an iterator object.