const promiseOrCallback = (promise, callback) => { if (typeof callback != "function") { return promise; } return promise .then((result) => (callback(null, result))) .catch(callback); }; const foo = (a, b, callback) => { const promise = new Promise((resolve, reject) => { return resolve(a + b); }); return promiseOrCallback(promise, callback); }