|
123456789101112131415161718192021222324252627 |
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = awaitify;
- // conditionally promisify a function.
- // only return a promise if a callback is omitted
- function awaitify(asyncFn, arity = asyncFn.length) {
- if (!arity) throw new Error('arity is undefined');
- function awaitable(...args) {
- if (typeof args[arity - 1] === 'function') {
- return asyncFn.apply(this, args);
- }
-
- return new Promise((resolve, reject) => {
- args[arity - 1] = (err, ...cbArgs) => {
- if (err) return reject(err);
- resolve(cbArgs.length > 1 ? cbArgs : cbArgs[0]);
- };
- asyncFn.apply(this, args);
- });
- }
-
- return awaitable;
- }
- module.exports = exports['default'];
|