You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
23 lines
643 B
23 lines
643 B
var call = require('../internals/function-call'); |
|
var anObject = require('../internals/an-object'); |
|
var getMethod = require('../internals/get-method'); |
|
|
|
module.exports = function (iterator, kind, value) { |
|
var innerResult, innerError; |
|
anObject(iterator); |
|
try { |
|
innerResult = getMethod(iterator, 'return'); |
|
if (!innerResult) { |
|
if (kind === 'throw') throw value; |
|
return value; |
|
} |
|
innerResult = call(innerResult, iterator); |
|
} catch (error) { |
|
innerError = true; |
|
innerResult = error; |
|
} |
|
if (kind === 'throw') throw value; |
|
if (innerError) throw innerResult; |
|
anObject(innerResult); |
|
return value; |
|
};
|
|
|