title: Why is ES6 "yield" a reserved word when called in this context?
body: <p>I am using node 4.1.1.  When I run this code</p>
  
  <pre><code>"use strict";
  
  function *generator() {
    let numbers = [1,2,3,4,5];
    numbers.map(n =&gt; yield (n + 1));
  }
  
  for (var n of generator()) {
    console.log(n);
  }
  </code></pre>
  
  <p>I get this error</p>
  
  <pre><code>  numbers.map(n =&gt; yield (n + 1));
                     ^^^^^
  
  SyntaxError: Unexpected strict mode reserved word
  </code></pre>
  
  <p>If I rearrange the code to be this</p>
  
  <pre><code>"use strict";
  
  function *generator() {
    let numbers = [1,2,3,4,5];
    let higherNumbers = numbers.map(n =&gt; n + 1);
    for(let i=0;i&lt;higherNumbers.length;i++) {
      yield higherNumbers[i];
    }
  }
  
  for (var n of generator()) {
    console.log(n);
  }
  </code></pre>
  
  <p>I get the expected result.</p>
  
  <p>Why does the second one work, and the first fail?  And surely if a keyword is reserved, it's reserved in all contexts, not just when it's used in a arrow function?</p>