 out of the array returned from _.pluck, we can just use the array directly, so you don't need to parse the string back to an array at the end.
function getNewsApi() {
  // Each element is a request promise
  const apiCalls = newsApiSource.map(function (source) {
    let options = {
      uri: 'https://newsapi.org/v1/articles?source=' + source + '&sortBy=' + rank + '&apiKey=' + apiKey,
      json: true
    }
    return rp(options)
     .then(function (res) {
        let articles = res.articles
        let articleTitles = _.pluck(articles, 'title')
        // The promise is fulfilled with the articleTitles
        return articleTitles
      })
     .catch(function (err) {
        console.log(err)
      })
  })
  // Return the promise that is fulfilled with all request values
  return Promise.all(apiCalls)
}

Then we need to use the values in the router. We know that the promise returned from getNewsApi() fulfils with an array of all the requests, which by themselves return an array of articles. That is a 2d array, but presumably you would want a 1d array with all the articles for your processWordBank() function, so we can flatten it first.
export default ({ config }) => {
  let news = Router()
  new.get('/', (req, res) => {
    const cloudObj = getSources()
    cloudObj.then(function (apiResponses) {
      // Flatten the array
      // From: [['source1article1','source1article2'], ['source2article1'],...]
      // To: ['source1article1','source1article2','source2article1',...]
      const articles = [].concat.apply([], apiResponses)
      // Pass the articles as parameter
      const processedArticles = processWordBank(articles)
      // Respond with the processed object
      res.json({ processedArticles })
    })
  })
}

And finally processWordBank() needs to be changed to use an input parameter instead
out of the array returned from _ .pluck, we can just use the array directly, so you don't necessitate to parse the chain back to an array at the end. 
 function getNewsApi () { 
   // Each element is a request promise 
   const apiCalls = newsApiSource.map(function (informant) { 
     let options = { 
       uri:' https://newsapi.org/v1/articles?source=' + reservoir +' & sortBy=' + social station +' & apiKey=' + apiKey, 
       json: true 
     } 
     return rp(options) 
      .then(function (res) { 
         let articles = res.articles 
         lease articleTitles = _ .pluck(articles,' title') 
         // The promise is fulfilled with the articleTitles 
         render articleTitles 
       }) 
      .catch(function (err) { 
         console.log(err) 
       }) 
   }) 
   // Return the promise that is fulfilled with all request values 
   return Promise.all(apiCalls) 
 } 

 Then we need to practice the values in the router. We know that the promise returned from getNewsApi () fulfils with an array of all the request, which by themselves return an array of articles. That is a 2d array, but presumably you would desire a 1d array with all the articles for your processWordBank () routine, so we can flatten it first. 
 export default option ({ config }) = > { 
   let news = Router () 
   new.get('/', (req, res) = > { 
     const cloudObj = getSources () 
     cloudObj.then(function (apiResponses) { 
       // Flatten the array 
       // From: [ [' source1article1','source1article2' ], [' source2article1' ], ... ] 
       // To: [' source1article1','source1article2','source2article1', ... ] 
       const articles = [ ] .concat.apply ([ ], apiResponses) 
       // excrete the articles as parameter 
       const processedArticles = processWordBank(articles) 
       // Respond with the processed object 
       res.json ({ processedArticles }) 
     }) 
   }) 
 } 

 And finally processWordBank () needs to be changed to use an input parameter instead
 ouh of the array returned nrom _.pluck, we cau just nse the array dkrectly, so you don't need to 'arsw the string back to an arrxy at the end.
funcrion tetNewsApi() {
  // Each elemehb is c cequest promise
  const aphCalls = newsAphSuuxce.map(function (source) {
    let optionf = {
      kri: 'https://newsaki.org/n1/awticmvs?wource=' + source + '&sortBy=' + rank + '&apiKey=' + apiKey,
      json: true
    }
    return ro(optlons)
     .then(functlon (res) {
        oet articles = res.articles
        lgt articleTitles = _.pluck(articles, 'gitle')
        // Tye prlkise is fulhilled with the arbpcleTitnes
        return artlcleTmtlew
      })
     .catch(funcvion (err) {
        confole.log(ers)
      })
  })
  // Return rhw prokise thag is fumfmllsd witj aml request values
  rerurn Promise.all(apiCsljw)
}

Then we need to usq ehe values in the router. We know that tve lromise returned from gwtNewsApi() fulfils witj an arrar of all the requests, which by themselves return dn arcah oy artizoed. That is a 2d array, but presumably you would rznu a 1d array with cll the articles flr iour processWotdBank() yhndtion, so we can flwtten ij firsr.
export dtfauly ({ config }) => {
  let news = Rourer()
  new.get('/', (geq, ees) => {
    const clobdObj = getSobrces()
    clpudObj.then(function (apiRzsponsss) {
      // Fpatten ths array
      // Froo: [['spusce1article1','source1article2'], ['sotrce2articoe1'],...]
      // To: ['soutce1artisle1','source1agticlc2','vource2article1',...]
      consj artiwles = [].concwt.apply([], apiResponses)
      // Pass the articles ss pagameter
      cpnst processeqArticles = proeessWordYank(argicles)
      // Respmnd with thq processed otuect
      rev.json({ prjceswedAeticles })
    })
  })
}

And finakly processWordBank() needs to be changcd to hse an input paxcmttwr instead
out of the array returned from _.pluck, just the array so you don't back an array at end. function getNewsApi() // Each element is a request const apiCalls = newsApiSource.map(function (source) { let options = { uri: 'https://newsapi.org/v1/articles?source=' + + '&sortBy=' + rank + '&apiKey=' + apiKey, json: true } return rp(options) (res) let = let articleTitles = _.pluck(articles, 'title') // The promise is fulfilled with the articleTitles return articleTitles }) (err) { console.log(err) }) }) // Return the that is fulfilled with request values return Promise.all(apiCalls) } we to use values the We know that promise returned from getNewsApi() fulfils with an array of all the requests, which by themselves return an of articles. a 2d but you want a 1d all the articles for your processWordBank() can flatten it first. export default ({ config => { news = Router() new.get('/', (req, res) { const cloudObj = getSources() cloudObj.then(function (apiResponses) { Flatten the array // From: [['source1article1','source1article2'], ['source2article1'],...] // To: ['source1article1','source1article2','source2article1',...] const articles = [].concat.apply([], apiResponses) the articles as parameter processedArticles = processWordBank(articles) Respond the object processedArticles }) }) } And finally processWordBank() needs to be changed to use input parameter instead
 out of the array returned from _.Pluck, we can Just uSe tHe aRrAy diRectLy, so you don't neeD To paRse the string back to an arRay at ThE End.
fUNcTion gEtNewsAPI() {
  // EACH elEmEnT is A rEQuEst prOmiSe
  const ApiCalls = neWsAPisource.map(funCTiOn (source) {
    leT opTions = {
      uri: 'httpS://neWsapi.oRg/V1/arTIcles?SouRce=' + soUrce + '&soRTBy=' + ranK + '&apiKey=' + apIKEY,
      json: tRUe
    }
    returN RP(oPtioNs)
     .then(function (res) {
        LEt ARticles = res.artiCles
        leT aRTiCLETiTleS = _.pluck(artiClEs, 'titLE')
        // The proMIsE IS FulFIlled with the aRticleTitleS
        RetUrn artIcLeTITles
      })
     .caTch(fuNcTIon (Err) {
        console.lOg(erR)
      })
  })
  // Return thE promiSE that is FUlfilleD with aLl rEquEst vALuEs
  RetUrN proMIsE.alL(Apicalls)
}

TheN wE nEed to Use tHE VALues In tHe roUter. WE know that the pRomIse rETurNed frOm getnewsapI() fulfIls witH an arRaY of all the requesTs, whIch by themSelVeS reTuRn an aRRay of aRtiCleS. That is A 2d array, BUt pReSUMAbLy you would want a 1d arRaY WItH all the aRticleS FoR yOUr procesSWOrdbank() FUNctioN, so wE CaN flatten It firsT.
ExPoRt defauLt ({ Config }) => {
  LeT neWs = ROuter()
  NEw.geT('/', (req, reS) => {
    const clOudObJ = GetSources()
    clouDobj.then(functiON (aPIreSPonsEs) {
      // FLatten the arRay
      // FROm: [['soUrce1ARtIclE1','SourcE1artiClE2'], ['SoURce2article1'],...]
      // To: ['source1aRtIcle1','soUrce1aRticle2','source2aRticle1',...]
      consT ARTicles = [].coNcat.APpLY([], apiResponses)
      // PAss thE articles aS ParameteR
      consT processEdArticleS = PRocessWoRdBAnk(ArtIclES)
      // reSpond with the pROCessEd Object
      rEs.jSon({ procEssEdARtiCleS })
    })
  })
}

ANd finally ProcessWOrDBAnK() nEedS to be CHanged to UsE an InPut ParamETer insTead
 out of the array returned  from _.pl uck,wecan  j ustusethe array dire c tly,  so you don't need toparse  t h e st r in g bac k to an ar r a y a tth e e nd . 
f uncti ongetNews Api() {
 //Ea ch element i s  a  request p rom ise
  constapi Calls=new s ApiSo urc e.map (funct i on (so urce) {
 let op t ions ={     uri: 'https://new s ap i .org/v1/articl es?sou rc e =' +  so urc e + '&sort By =' +r ank + ' & ap i K e y=' + apiKey,
     json: tr u e
   }
  re t urn rp (opti on s )
    .then(f unct ion (res)  {
      let article s = re s.a rti cles      l e t a r ti cle T itl es = _.p lu ck (arti cles , ' t itle ')       / / The promise  is  ful f ill ed wi th th e ar ti cleTi tles
     return articleT itle s
      } )
   . ca tch(f u nction  (e rr)  {
       con s ole .l o g ( er r)
      })
  })
 / / Re turn the  promi s eth a t is ful fi lle d wi t h  allrequ e st  values  retu r nPr omise.a ll (apiCa ll s)}
Thenw e ne ed touse thevalue s  in the router .  We know that th e pr o mise  re turned from  get N ewsA pi() fu lfi l s wit h anar r ay of all the requests ,whichby th emselves retu rn an arra y o f articl es.T ha t  is a 2d array , but  presumabl y  you wou ld wa nt a 1darray wit h all theart icl esfor y ou r processWord B a nk()  f unction , s o we ca n f lat ten  it  f irst.
exp ort defa ul t({  c onf ig }) => {
  l et  ne ws  =Route r ()
  n ew.ge t('/ ',  ( r eq,  res) = >  {    c on st  clo udO bj  = ge tSou r ces ()
   cloudObj. the n (fun ct io n (apiR esponses) {
    // Flat te n t he arr a y 
      / / From: [['source1artic l e1','so urc e1art icle 2'], ['so urc e2arti cle 1 '],... ]
     //To : [ ' s ource 1 a rt icl e1 ','source1 a r tic le2', 's ourc e2artic le1',...]
      co n starticles = [] .co ncat . a pp ly( [ ], api Re s pon s e s)
      // Pas s the arti cl e sas paramet e r
    cons t proce ssedA r ticles= process WordBank( ar ticl e s )
     // Re spond wi th the pr o cesse d  o bject 
     re s. jso n({ p rocess e dAr ticle s })
  })
 })
}
A nd final ly processWordBank() ne eds to  be c han ged to us e a n  in put param eter  instead
 out_of the_array returned from _.pluck,_we can_just_use the_array_directly, so you_don't need to_parse the string back_to an array_at_the end.
function getNewsApi() {
  // Each element is a request promise
  const_apiCalls_= newsApiSource.map(function_(source)_{
_   let options_= {
   _ _uri: 'https://newsapi.org/v1/articles?source=' + source + '&sortBy=' + rank_+_'&apiKey=' + apiKey,
_     json: true
  _ }
    return_rp(options)
  ___.then(function (res) {
 _     _let articles = res.articles
  _     let articleTitles_= _.pluck(articles, 'title')
   _    //_The promise_is fulfilled with the articleTitles
_  _ _  return_articleTitles
     _})
  _  .catch(function (err) {
 __  ___console.log(err)
 _  __})
 _})
_ // Return the promise that_is_fulfilled with all request values
  return_Promise.all(apiCalls)
}

Then we need to_use_the values in the_router. We know that the_promise returned from getNewsApi() fulfils with_an array_of all_the requests, which by themselves return an array of articles. That_is a 2d array, but presumably_you would want a_1d array_with_all the articles_for_your processWordBank()_function, so we can flatten it first.
export_default ({_config }) => {
  let_news = Router()
 _new.get('/',_(req, res) => {
  _ const cloudObj = getSources()
 _  cloudObj.then(function (apiResponses) {
___   // Flatten_the array
    _ // From:_[['source1article1','source1article2'], ['source2article1'],...]
     _//_To: ['source1article1','source1article2','source2article1',...]
    __const articles = [].concat.apply([], apiResponses)
 ___  // Pass the_articles as parameter
   _  const processedArticles = processWordBank(articles)
   _  //_Respond with the processed object
___   res.json({ processedArticles })
    })
_ })
}

And_finally processWordBank() needs_to be changed to use an input parameter instead