motion
Version:
motion - moving development forward
30 lines (27 loc) • 932 B
JavaScript
;
/* @flow */
module.exports = function promisify(callback) {
return function promisified() {
var _this = this;
const parameters = Array.from(arguments);
const parametersLength = parameters.length + 1;
return new Promise(function (resolve, reject) {
parameters.push(function (error, data) {
if (error) {
reject(error);
} else resolve(data);
});
if (parametersLength === 1) {
callback.call(_this, parameters[0]);
} else if (parametersLength === 2) {
callback.call(_this, parameters[0], parameters[1]);
} else if (parametersLength === 3) {
callback.call(_this, parameters[0], parameters[1], parameters[2]);
} else if (parametersLength === 4) {
callback.call(_this, parameters[0], parameters[1], parameters[2], parameters[3]);
} else {
callback.apply(_this, parameters);
}
});
};
};