Passing data from one promise to another using then
You could do like so if you prefer, essentially just pass forward the data i the promises. You could write your own promiseAllObject if you want it to be slightly neater.
const result = getMovies()
  .then(movies =&gt; {
    return Promise.all([
      Promise.all(movies.map(({ movieId }) =&gt; getTitle(movieId))),
      movies.map(_ =&gt; _.rating)
    ]);
  })
  .then(([titlesObj, ratings]) =&gt; ({
    titles: titlesObj.map(_ =&gt; _.title),
    ratings
  }))
  .catch(console.log);

result.then(r =&gt; console.log(r));