Get the Promise and its reject/resolve function pointers. Save some nesting levels.
function promiseAsParts() {
let resolve, reject;
return { promise: new Promise((...args) => { [resolve, reject] = args; }), resolve, reject }
}
if (module && module.exports) module.exports = promiseAsParts;