1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 1x 386x 220x 220x 1x | import { skip } from './utils' /** * Left-first composition for methods of any type. * * @param {[Function]} ...funcs Resolver implementations. * @return {Promise}. */ export const combineResolvers = (...funcs) => (...args) => funcs.reduce( (prevPromise, resolver) => prevPromise.then( prev => prev === skip ? resolver(...args) : prev ), Promise.resolve() ).catch(err => err) |