iterator-close.js 542 B

123456789101112131415161718192021
  1. var anObject = require('../internals/an-object');
  2. module.exports = function (iterator, kind, value) {
  3. var innerResult, innerError;
  4. anObject(iterator);
  5. try {
  6. innerResult = iterator['return'];
  7. if (innerResult === undefined) {
  8. if (kind === 'throw') throw value;
  9. return value;
  10. }
  11. innerResult = innerResult.call(iterator);
  12. } catch (error) {
  13. innerError = true;
  14. innerResult = error;
  15. }
  16. if (kind === 'throw') throw value;
  17. if (innerError) throw innerResult;
  18. anObject(innerResult);
  19. return value;
  20. };