ascallback
Version:
Use bluebird's ascallback (aka nodeify) to convert promises to node style callbacks.
26 lines (19 loc) • 525 B
JavaScript
;
function asCallback(promise, cb, options) {
if (typeof cb !== 'function') return promise
let p = promise.then(function (ret) {
if (options && options.spread && Array.isArray(ret)) {
cb.apply(null, [null].concat(ret))
} else cb(null, ret)
}, cb)
if (typeof p.done === 'function') {
p.done()
} else if (typeof setTimeout === 'function') {
p.catch(asyncThrow)
}
return promise
}
function asyncThrow(e) {
setTimeout(function() {throw e}, 0)
}
module.exports = asCallback