123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- let 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
- function promise(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((resolve, reject) => {
- args.push((err, data) => {
- if (err) {
- reject(err);
- } else {
- resolve(data);
- }
- });
- fn.apply(context, args);
- });
- }
- /// @param {err} the error to be thrown
- function reject(err) {
- return Promise.reject(err);
- }
- /// changes the promise implementation that bcrypt uses
- /// @param {Promise} the implementation to use
- function use(promise) {
- Promise = promise;
- }
- module.exports = {
- promise,
- reject,
- use
- }
|