diff --git a/lib/hooks.js b/lib/hooks.js index 3ba50ca..a4e47ae 100644 --- a/lib/hooks.js +++ b/lib/hooks.js @@ -5,32 +5,32 @@ const RollbackReason = function (error) { }; const start = () => { - return hook => new Promise(resolve => { + return hook => { if (!hook.service.Model || typeof hook.service.Model.transaction !== 'function') { - return resolve(hook); + return Promise.resolve(hook); } if (hook.params.transaction) { hook.params.transaction.count += 1; - return resolve(hook); + return Promise.resolve(hook); } - const transaction = {}; - - transaction.promise = hook.service.Model.transaction(trx => { - transaction.trx = trx; - transaction.id = Date.now(); - transaction.count = 0; + return new Promise((resolve, reject) => { + const id = Date.now(); - hook.params.transaction = transaction; - - debug('started a new transaction %s', transaction.id); - return resolve(hook); - }).catch((error) => { - if (error instanceof RollbackReason) return; - throw error; + debug('started a new transaction %s', id); + hook.service.Model + .transaction(trx => resolve({ + id, + trx, + count: 0 + })) + .catch(err => reject(err)); + }).then(trx => { + hook.params.transaction = trx; + return hook; }); - }); + }; }; const end = () => {