function(_, cb) { cps.rescue({ 'try': function(cb) { cps.seq([ function(_, cb) { proc(txnConn, cb); }, function(res, cb) { commitRes = res; // console.log('committing'); txnConn.query('COMMIT', cb); }, function(_, cb) { // console.log('committed'); cb(null, commitRes); } ], cb); }, 'catch': function(err, cb) { cps.seq([ function(_, cb) { // console.log('rolling back ...'); txnConn.query('ROLLBACK', cb); }, function(_, cb) { // console.log('rolled back'); throw(err); } ], cb); } }, cb); }
me._connect(me._transactionPool, function(conn, cb) { me._enterTransaction(conn); txnConn = conn; cps.rescue({ 'try': function(cb) { cps.seq([ function(_, cb) { // console.log('start transaction'); txnConn.query('START TRANSACTION', cb); }, function(_, cb) { cps.rescue({ 'try': function(cb) { cps.seq([ function(_, cb) { proc(txnConn, cb); }, function(res, cb) { commitRes = res; // console.log('committing'); txnConn.query('COMMIT', cb); }, function(_, cb) { // console.log('committed'); cb(null, commitRes); } ], cb); }, 'catch': function(err, cb) { cps.seq([ function(_, cb) { // console.log('rolling back ...'); txnConn.query('ROLLBACK', cb); }, function(_, cb) { // console.log('rolled back'); throw(err); } ], cb); } }, cb); } ], cb); }, 'finally': function(cb) { // console.log('txn connection release'); // txnConn.release(); me._leaveTransaction(txnConn); cb(); } }, cb); }, cb);
function(res, cb) { conn = res; cps.rescue({ 'try': function(cb) { proc(conn, cb); }, 'finally': function(cb) { // console.log('release connection'); conn.release(); cb(); } }, cb); }