UNPKG

pouchdb-find

Version:
60 lines (55 loc) 1.39 kB
'use strict'; /* istanbul ignore if */ if (typeof global.Promise === 'function') { exports.Promise = global.Promise; } else { exports.Promise = require('lie'); } exports.inherits = require('inherits'); exports.extend = require('pouchdb-extend'); var argsarray = require('argsarray'); exports.promisedCallback = function (promise, callback) { if (callback) { promise.then(function (res) { process.nextTick(function () { callback(null, res); }); }, function (reason) { process.nextTick(function () { callback(reason); }); }); } return promise; }; exports.callbackify = function (fun) { return argsarray(function (args) { var cb = args.pop(); var promise = fun.apply(this, args); if (typeof cb === 'function') { exports.promisedCallback(promise, cb); } return promise; }); }; // Promise finally util similar to Q.finally exports.fin = function (promise, cb) { return promise.then(function (res) { var promise2 = cb(); if (typeof promise2.then === 'function') { return promise2.then(function () { return res; }); } return res; }, function (reason) { var promise2 = cb(); /* istanbul ignore next */ if (typeof promise2.then === 'function') { return promise2.then(function () { throw reason; }); } throw reason; }); };