docs: function exec(batch) {
      var context = batch.__context__
          , methods = batch.__methods__
  
      loop()
  
      function loop(err) {
          if (err) {
              return batch.emit("error", err)
          }
  
          var command = context.shift()
              , name = command[0]
              , args = command[1]
              , lastIndex = args.length - 1
              , callback = args[lastIndex]
  
          if (typeof callback === "function") {
              args.splice(lastIndex, 1, intercept)
          } else {
              args.push(loop)
          }
  
          methods[name].apply(methods, args)
  
          function intercept(err) {
              if (err) {
                  return callback(err)
              }
  
              if (context.length === 0) {
                  batch.__context__ = null
              }
  
              callback.apply(this, arguments)
  
              if (context.length !== 0) {
                  loop()
              } else {
                  batch.emit("finish")
              }
          }
      }
  }