IfAbruptCloseIterators.js 602 B

12345678910111213141516171819
  1. 'use strict';
  2. var $TypeError = require('es-errors/type');
  3. var CompletionRecord = require('es-abstract/2024/CompletionRecord');
  4. var IteratorCloseAll = require('./IteratorCloseAll');
  5. // https://tc39.es/proposal-joint-iteration/#sec-ifabruptcloseiterators
  6. module.exports = function IfAbruptCloseIterators(value, iteratorRecords) {
  7. if (!(value instanceof CompletionRecord)) {
  8. throw new $TypeError('Assertion failed: `value` must be a Completion Record'); // step 1
  9. }
  10. if (value.type() === 'throw') {
  11. return IteratorCloseAll(iteratorRecords, value); // step 2
  12. }
  13. return value['!'](); // step
  14. };