code: function (block, cb) {
              var self = this;
              var ret = asyncArray(this.forEach().chain(function (records) {
                  return self.postLoad(records);
              }));
              if (block) {
                  ret = ret.forEach(block);
              }
              return ret.classic(cb).promise();
          }
docs: Returns a Promise that is resolved with an array with all records in the dataset.
  If a block is given, the array is iterated over after all items have been loaded.
  
  @example
  
  // SELECT * FROM table
  DB.from("table").all().chain(function(res){
  //res === [{id : 1, ...}, {id : 2, ...}, ...];
  });
  // Iterate over all rows in the table
  var myArr = [];
  var rowPromise = DB.from("table").all(function(row){ myArr.push(row);});
  rowPromise.chain(function(rows){
  //=> rows == myArr;
  });
  
  @param {Function} block a block to be called with each item. The return value of the block is ignored.
  @param {Function} [cb] a block to invoke when the action is done
  
  @return {comb.Promise} a promise that is resolved with an array of rows.