call-with-safe-iteration-closing.js 456 B

12345678910111213
  1. var anObject = require('../internals/an-object');
  2. // call something on iterator step with safe closing on error
  3. module.exports = function (iterator, fn, value, ENTRIES) {
  4. try {
  5. return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);
  6. // 7.4.6 IteratorClose(iterator, completion)
  7. } catch (error) {
  8. var returnMethod = iterator['return'];
  9. if (returnMethod !== undefined) anObject(returnMethod.call(iterator));
  10. throw error;
  11. }
  12. };