Generators are function execution contexts that can be paused and resumed.
A Generator function will yield a value then stop but the function context of a Generator is not disposed of (as it is with normal functions). You can re-enter the Generator at a later point in time and pick up further results
function* threeThings() {
yield 'one';
yield 'two';
yield 'three';
}