code: function main(input) {
    // instantiate spinners
    const spinners = new Multispinner(input, {
      preText: 'Downloading'
    })
  
    /**
     * consume promises (simultaneously)
     * note: then's error cb is unused because download() doesn't rethrow in its
     *   catch statement; its errs are intentionally returned to be formatted and
     *   printed later
     */
    Promise
      .all(
        // generate array of promises to download urls
        input.reduce((accum, url) => {
          accum.push(download(url, url, spinners))
          return accum
        }, [])
      )
      .then(results => spinners.on('done', () => print(results)))
      .catch(err => { throw err })
  }
docs: ---------------------------------------------------------- Main Logic ---------------------------------------------------------- 
  @function main
  @param {string[]} input - arr of inputs from cli
  @returns {undefined}