diff --git a/lib/batch.js b/lib/batch.js index c59b5f0d..bc43f95d 100644 --- a/lib/batch.js +++ b/lib/batch.js @@ -1,5 +1,5 @@ var WriteError = require('level-errors').WriteError -var promisify = require('./promisify') +var catering = require('catering') var getCallback = require('./common').getCallback var getOptions = require('./common').getOptions @@ -53,15 +53,9 @@ Batch.prototype.clear = function () { Batch.prototype.write = function (options, callback) { var levelup = this._levelup var ops = this.ops - var promise callback = getCallback(options, callback) - - if (!callback) { - callback = promisify() - promise = callback.promise - } - + callback = catering.fromCallback(callback) options = getOptions(options) try { @@ -74,7 +68,7 @@ Batch.prototype.write = function (options, callback) { throw new WriteError(err) } - return promise + return callback.promise } module.exports = Batch diff --git a/lib/levelup.js b/lib/levelup.js index efc30d36..57917dc8 100644 --- a/lib/levelup.js +++ b/lib/levelup.js @@ -7,7 +7,7 @@ var Batch = require('./batch') var errors = require('level-errors') var supports = require('level-supports') var assert = require('assert') -var promisify = require('./promisify') +var catering = require('catering') var getCallback = require('./common').getCallback var getOptions = require('./common').getOptions @@ -86,17 +86,13 @@ inherits(LevelUP, EventEmitter) LevelUP.prototype.open = function (opts, callback) { var self = this - var promise if (typeof opts === 'function') { callback = opts opts = null } - if (!callback) { - callback = promisify() - promise = callback.promise - } + callback = catering.fromCallback(callback) if (!opts) { opts = this.options @@ -104,12 +100,12 @@ LevelUP.prototype.open = function (opts, callback) { if (this.isOpen()) { process.nextTick(callback, null, self) - return promise + return callback.promise } if (this._isOpening()) { this.once('open', function () { callback(null, self) }) - return promise + return callback.promise } this.emit('opening') @@ -124,17 +120,13 @@ LevelUP.prototype.open = function (opts, callback) { self.emit('ready') }) - return promise + return callback.promise } LevelUP.prototype.close = function (callback) { var self = this - var promise - if (!callback) { - callback = promisify() - promise = callback.promise - } + callback = catering.fromCallback(callback) if (this.isOpen()) { this.db.close(function () { @@ -153,7 +145,7 @@ LevelUP.prototype.close = function (callback) { }) } - return promise + return callback.promise } LevelUP.prototype.isOpen = function () { @@ -169,17 +161,13 @@ LevelUP.prototype.isClosed = function () { } LevelUP.prototype.get = function (key, options, callback) { - var promise - callback = getCallback(options, callback) + callback = catering.fromCallback(callback) - if (!callback) { - callback = promisify() - promise = callback.promise + if (maybeError(this, callback)) { + return callback.promise } - if (maybeError(this, callback)) { return promise } - options = getOptions(options) this.db.get(key, options, function (err, value) { @@ -194,22 +182,19 @@ LevelUP.prototype.get = function (key, options, callback) { callback(null, value) }) - return promise + return callback.promise } LevelUP.prototype.put = function (key, value, options, callback) { var self = this - var promise callback = getCallback(options, callback) + callback = catering.fromCallback(callback) - if (!callback) { - callback = promisify() - promise = callback.promise + if (maybeError(this, callback)) { + return callback.promise } - if (maybeError(this, callback)) { return promise } - options = getOptions(options) this.db.put(key, value, options, function (err) { @@ -220,22 +205,19 @@ LevelUP.prototype.put = function (key, value, options, callback) { callback() }) - return promise + return callback.promise } LevelUP.prototype.del = function (key, options, callback) { var self = this - var promise callback = getCallback(options, callback) + callback = catering.fromCallback(callback) - if (!callback) { - callback = promisify() - promise = callback.promise + if (maybeError(this, callback)) { + return callback.promise } - if (maybeError(this, callback)) { return promise } - options = getOptions(options) this.db.del(key, options, function (err) { @@ -246,7 +228,7 @@ LevelUP.prototype.del = function (key, options, callback) { callback() }) - return promise + return callback.promise } LevelUP.prototype.batch = function (arr, options, callback) { @@ -255,17 +237,15 @@ LevelUP.prototype.batch = function (arr, options, callback) { } var self = this - var promise if (typeof arr === 'function') callback = arr else callback = getCallback(options, callback) - if (!callback) { - callback = promisify() - promise = callback.promise - } + callback = catering.fromCallback(callback) - if (maybeError(this, callback)) { return promise } + if (maybeError(this, callback)) { + return callback.promise + } options = getOptions(options) @@ -277,7 +257,7 @@ LevelUP.prototype.batch = function (arr, options, callback) { callback() }) - return promise + return callback.promise } LevelUP.prototype.iterator = function (options) { @@ -286,18 +266,13 @@ LevelUP.prototype.iterator = function (options) { LevelUP.prototype.clear = function (options, callback) { var self = this - var promise callback = getCallback(options, callback) options = getOptions(options) - - if (!callback) { - callback = promisify() - promise = callback.promise - } + callback = catering.fromCallback(callback) if (maybeError(this, callback)) { - return promise + return callback.promise } this.db.clear(options, function (err) { @@ -308,7 +283,7 @@ LevelUP.prototype.clear = function (options, callback) { callback() }) - return promise + return callback.promise } LevelUP.prototype.readStream = diff --git a/lib/promisify.js b/lib/promisify.js deleted file mode 100644 index d7dad86b..00000000 --- a/lib/promisify.js +++ /dev/null @@ -1,13 +0,0 @@ -function promisify () { - var callback - var promise = new Promise(function (resolve, reject) { - callback = function callback (err, value) { - if (err) reject(err) - else resolve(value) - } - }) - callback.promise = promise - return callback -} - -module.exports = promisify diff --git a/package.json b/package.json index 3cceeb1f..10706125 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "prepublishOnly": "npm run dependency-check" }, "dependencies": { + "catering": "~2.0.0", "deferred-leveldown": "~5.3.0", "level-errors": "~2.0.0", "level-iterator-stream": "~4.0.0",