Я пытаюсь написать рекурсивный генератор для обхода.
class Tree {
  *inOrderTraversal() {
    function* helper(node) {
      if (node.left !== null) {
        // this line is executed, but helper is not being called
        helper(node.left); 
      }
      yield node.value;
      if (node.right !== null) {
        helper(node.right);
      }
    }
    for (let i of helper(this.root)) {
      yield i;
    }
  }
  // other methods omitted
}
И я вызываю генератор так:
const tree = new Tree();
tree.add(2);
tree.add(1);
tree.add(3);
for (let i of tree.inOrderTraversal()) {
    console.log(i); // only prints 2
}
Почему генератор дает только 2? Почему это, по крайней мере, не дает 1 до 2?
Как я могу это исправить?
Если это помогает, я транслирую код с помощью babel.
 babel --optional runtime test.js | node
