saveAll(callback, txn) {

    if (!this.length) {
      return callback.call(this, null, this);
    }

    let series = [];

    let newTransaction = !txn;
    if (newTransaction) {
      series = series.concat(
        cb => {
          this.Model.transaction((err, newTxn) => {
            if (err) {
              cb(err);
            }
            txn = newTxn;
            return cb();
          });
        }
      );
    }

    async.series(
      series.concat(this.map(m => cb => m.save(cb, txn))),
      (err) => {

        if (newTransaction) {
          if (err) {
            return txn.rollback(txnErr => callback(err, this));
          }
          return txn.commit(txnErr => callback(txnErr, this));
        }

        return callback(err, this);

      }
    );

  }
Saves / updates all models in the ModelArray.
@param {function} callback returning the error and reference to self