code: function (array, block, cb) {
              var promises, ret;
              if (block) {
                  ret = when(array.map(function (i) {
                      return this.insert(block(i));
                  }, this));
              } else {
                  ret = when(array.map(function (i) {
                      return this.insert(i);
                  }, this));
              }
              return ret.classic(cb).promise();
          }
docs: Inserts multiple values. If a block is given it is invoked for each
  item in the given array before inserting it.  See {@link patio.Dataset#multiInsert} as
  a possible faster version that inserts multiple records in one SQL statement.
  
  <b> Params see @link patio.Dataset#insert</b>
  
  @example
  
  DB.from("table").insertMultiple([{x : 1}, {x : 2}]);
  //=> INSERT INTO table (x) VALUES (1)
  //=> INSERT INTO table (x) VALUES (2)
  
  DB.from("table").insertMultiple([{x : 1}, {x : 2}], function(row){
  row.y = row.x * 2;
  });
  //=> INSERT INTO table (x, y) VALUES (1, 2)
  //=> INSERT INTO table (x, y) VALUES (2, 4)
  
  @param array See {@link patio.Dataset#insert} for possible values.
  @param {Function} [block] a function to be called before each item is inserted.
  @param {Function} [cb] a function to be called when the aciton is complete
  
  @return {comb.PromiseList} a promiseList that should be resolved with the id of each item inserted
  in the order that was in the array.