code: function each (callback, context) {
      // require function
      assert.equal(typeof callback, 'function', 'callback must be function')
      // create context object that will be passed to each callback
      if (!context) {
          context = {}
      }
      // record number counter
      var recordNum = 0
      // return new promise that will be resolved once all records iterated over
      return new Promise((resolve, reject) => {
          _each(this, callback, context, recordNum, resolve, reject)
      })
  }
docs: @function each
  
  returns promise that will be resolved after iterating over all records and
  calling passed in callback for each.
  
  the callback function will be called with the current row, the row number,
  and a context object which is passed to each callback.
  
  the context object can be passed in as an optional argument.
  
  the promise returned by each will be resolved with the context object when
  iteration is complete.
  
  @param {function} callback
  @param {object} context
  
  @returns {Promise}
  
  @throws {Error}