IfAbruptCloseIterator.js 573 B

12345678910111213141516171819
  1. 'use strict';
  2. var $TypeError = require('es-errors/type');
  3. var CompletionRecord = require('./CompletionRecord');
  4. var IteratorClose = require('./IteratorClose');
  5. // https://262.ecma-international.org/16.0/#sec-ifabruptcloseiterator
  6. module.exports = function IfAbruptCloseIterator(value, iteratorRecord) {
  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 IteratorClose(iteratorRecord, value); // step 2
  12. }
  13. return value['!'](); // step
  14. };