123456789101112131415161718192021222324252627282930313233343536373839404142 |
- 'use strict';
- var Promise = global.Promise;
- /// encapsulate a method with a node-style callback in a Promise
- /// @param {object} 'this' of the encapsulated function
- /// @param {function} function to be encapsulated
- /// @param {Array-like} args to be passed to the called function
- /// @return {Promise} a Promise encapsulating the function
- module.exports.promise = function (fn, context, args) {
- if (!Array.isArray(args)) {
- args = Array.prototype.slice.call(args);
- }
- if (typeof fn !== 'function') {
- return Promise.reject(new Error('fn must be a function'));
- }
- return new Promise(function(resolve, reject) {
- args.push(function(err, data) {
- if (err) {
- reject(err);
- } else {
- resolve(data);
- }
- });
- fn.apply(context, args);
- });
- };
- /// @param {err} the error to be thrown
- module.exports.reject = function (err) {
- return Promise.reject(err);
- };
- /// changes the promise implementation that bcrypt uses
- /// @param {Promise} the implementation to use
- module.exports.use = function(promise) {
- Promise = promise;
- };
|