UNPKG

minio

Version:

S3 Compatible Cloud Storage client

32 lines (26 loc) 870 B
// Returns a wrapper function that will promisify a given callback function. // It will preserve 'this'. export function promisify(fn) { return function () { // If the last argument is a function, assume its the callback. let callback = arguments[arguments.length - 1] // If the callback is given, don't promisify, just pass straight in. if (typeof callback === 'function') { return fn.apply(this, arguments) } // Otherwise, create a new set of arguments, and wrap // it in a promise. let args = [...arguments] return new Promise((resolve, reject) => { // Add the callback function. args.push((err, value) => { if (err) { return reject(err) } resolve(value) }) // Call the function with our special adaptor callback added. fn.apply(this, args) }) } }