| var ITERATOR = require('./_wks')('iterator'); |
| var SAFE_CLOSING = false; |
| |
| try { |
| var riter = [7][ITERATOR](); |
| riter['return'] = function () { SAFE_CLOSING = true; }; |
| // eslint-disable-next-line no-throw-literal |
| Array.from(riter, function () { throw 2; }); |
| } catch (e) { /* empty */ } |
| |
| module.exports = function (exec, skipClosing) { |
| if (!skipClosing && !SAFE_CLOSING) return false; |
| var safe = false; |
| try { |
| var arr = [7]; |
| var iter = arr[ITERATOR](); |
| iter.next = function () { return { done: safe = true }; }; |
| arr[ITERATOR] = function () { return iter; }; |
| exec(arr); |
| } catch (e) { /* empty */ } |
| return safe; |
| }; |