code: function next () {
      var args = slice.call(arguments)
      if (!isYieldable) {
        // only handle callback if not yieldable
        if (iter && yielded) {
          // no need defer when yielded
          step.apply(self, args)
        } else {
          // need next tick if not defered
          process.nextTick(function () {
            step.apply(self, args)
          })
        }
      } else {
        step(new Error('Callback on yieldable is prohibited'))
      }
    }
docs: next, callback stepper with nextTick
  
  @param {object} err - callback error object
  @param {...*} val - callback value(s)