diff --git a/src/database.js b/src/database.js index 142c238ab..d36f9cb99 100644 --- a/src/database.js +++ b/src/database.js @@ -169,15 +169,19 @@ function transaction(queries, callback) { assert(util.isArray(queries)); assert.strictEqual(typeof callback, 'function'); - beginTransaction(function (error, conn) { + callback = once(callback); + + beginTransaction(function (error, connection) { if (error) return callback(error); - async.mapSeries(queries, function iterator(query, done) { - conn.query(query.query, query.args, done); - }, function seriesDone(error, results) { - if (error) return rollback(conn, callback.bind(null, error)); + connection.on('error', callback); - commit(conn, callback.bind(null, null, results)); + async.mapSeries(queries, function iterator(query, done) { + connection.query(query.query, query.args, done); + }, function seriesDone(error, results) { + if (error) return rollback(connection, callback.bind(null, error)); + + commit(connection, callback.bind(null, null, results)); }); }); }