/* */ 
var assertObject = require("./$.assert").obj;
function close(iterator) {
  var ret = iterator['return'];
  if (ret !== undefined)
    assertObject(ret.call(iterator));
}
function call(iterator, fn, value, entries) {
  try {
    return entries ? fn(assertObject(value)[0], value[1]) : fn(value);
  } catch (e) {
    close(iterator);
    throw e;
  }
}
call.close = close;
module.exports = call;
