function step(payload: mixed) {
    let next = iterator.next(payload)

    if (next.done) {
      action.resolve(payload)
    } else {
      progress(next.value)
    }
  }
Provide support for generators, performing a sequence of actions in
order.
@private