Por que o retorno não é retornado em um retorno de chamada `.map`?

Aprenda Geradores - 4 »ERRO DE CAPTURA! A solução usa umfor loop mas eu simplesmente não consegui encontrar nadaMDN - Protocolos de Iteração isso se refere ao rendimento nos retornos de chamada.

Vou adivinhar que a resposta é apenasdon't do that mas desde já agradeço se alguém tiver tempo ou disposição para fornecer uma explicação!

Código:

function *upper (items) {
  items.map(function (item) {
    try {
      yield item.toUpperCase()
    } catch (e) {
      yield 'null'
    }
  }
}

var badItems = ['a', 'B', 1, 'c']

for (var item of upper(badItems)) {
  console.log(item)
}
// want to log: A, B, null, C

Erro:

⇒  learn-generators run catch-error-map.js
/Users/gyaresu/programming/projects/nodeschool/learn-generators/catch-error-map.js:4
      yield item.toUpperCase() // error below
            ^^^^
SyntaxError: Unexpected identifier
    at exports.runInThisContext (vm.js:73:16)
    at Module._compile (module.js:443:25)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:129:16)
    at node.js:814:3

Até meu editor sabe que é uma péssima ideia ...

questionAnswers(2)

yourAnswerToTheQuestion