code: function next() {
          // Exit if all iterators are traversed.
          if (empties.size === count) {
              return done;
          }
  
          // Go to the next iterator.
          const iter = step();
  
          const res = iter.next();
  
          // Mark iterator as empty and go to the next.
          if (res.done) {
              empties.add(index);
  
              return next();
          }
  
          return res;
      }
docs: Returns next value.
  
  @returns {{done: boolean, value: *}}