String together your potentially promise-returning functions into a chain of responsibility. (The fallback pattern trying all strategies one after the other until one of them solves the task.)
Based on a module load function (typically your module's `require`, or a proxy for your `import`), create a function that promises to load the first available module from an array of candidate module names, probed in series.