new Promise(function (resolve, reject) {
                audiosearch.getShow(showId).then(function (show) {
                  var latestIds = show.episode_ids.slice(0,10)
                  var episodes = []
                  _.each(latestIds, function(episodeId){
                    episodes.push(
                      new Promise(function(resolve, reject) {
                        audiosearch.getEpisode(episodeId).then(function(episode){
                          resolve(episode)
                        });
                      })
                    );

                  })

                  Promise.all(episodes).then(function(resolvedPromises) {
                    resolve(resolvedPromises);
                  });
                });
              })
      return new Promise(function (resolve, reject) {
        audiosearch.getShow(showId).then(function (show) {
          // slice to 20 if size is larger than 20.
          var latestIds = show.episode_ids;
          if (latestIds.length > 20) {
            latestIds = latestIds.slice(0,20);
          }
          var episodes = []
          _.each(latestIds, function(episodeId){
            episodes.push(
              new Promise(function(resolve, reject) {
                audiosearch.getEpisode(episodeId).then(function(episode){
                  resolve(episode)
                });
              })
            );

          })

          Promise.all(episodes).then(function(resolvedPromises) {
            resolve(resolvedPromises);
          });
        });
      })
 new Promise(function (resolve, reject) {
   audiosearch.getShow(showId).then(function (results) {
     resolve(results);
   });
 })