code: function _each (result, callback, context, recordNum, resolve, reject) {
      // fetch more records
      result.fetch()
      // iterate over fetched records
      .then(records => {
          if (!records || !records.length) {
              return
          }
          // iterate over records
          return Promise.each(records, record => {
              // wait for callback to complete if it returns promise
              return callback(record, recordNum++, context)
          })
      })
      .then(() => {
          // resolve parent promise if done
          if (result.done) {
              resolve(context)
          }
          // iterate over more records if not all fetched
          else {
              _each(result, callback, context, recordNum, resolve, reject)
          }
      })
      // pass errors to parent promise
      .catch(reject)
  }
docs: @function _each
  
  recursive record iterator
  
  @param {ImmutableCoreModelResult} result
  @param {function} callback
  @param {object} context
  @param {integer} recordNum
  @param {function} resolve
  @param {function} reject