diff --git a/lib/bcoin/lowlevelup.js b/lib/bcoin/lowlevelup.js index c8247340..08e7e598 100644 --- a/lib/bcoin/lowlevelup.js +++ b/lib/bcoin/lowlevelup.js @@ -278,10 +278,19 @@ LowlevelUp.prototype.each = function each(options, handler, callback) { iter = this.iterator(opt); - (function next(stop) { - if (stop === true) + (function next(err, key) { + if (err && typeof err !== 'boolean') { + return iter.end(function() { + callback(err); + }); + } + + if (err === false) return iter.end(callback); + if (err === true) + iter.seek(key); + iter.next(function(err, key, value) { if (err) { return iter.end(function() { @@ -292,7 +301,13 @@ LowlevelUp.prototype.each = function each(options, handler, callback) { if (key === undefined) return iter.end(callback); - handler(key, value, next, i++); + try { + handler(key, value, next, i++); + } catch (e) { + return iter.end(function() { + callback(e); + }); + } }); })(); };