From 07e47c3bbb8742ffa9e87a2b2ddac932174a8699 Mon Sep 17 00:00:00 2001 From: Tianxiao Ma Date: Mon, 18 Feb 2019 19:29:40 +1100 Subject: [PATCH 1/2] expose ERROR symbol from error-handler --- lib/error-handler.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/error-handler.js b/lib/error-handler.js index 0aefe04..03f22bb 100644 --- a/lib/error-handler.js +++ b/lib/error-handler.js @@ -92,3 +92,5 @@ module.exports = function errorHandler (error) { throw feathersError; }; + +Object.assign(module.exports, { ERROR }); From 7d395676a7ec63348a6a7b04394a9c3f96e6ae61 Mon Sep 17 00:00:00 2001 From: Tianxiao Ma Date: Wed, 20 Mar 2019 17:39:21 +1100 Subject: [PATCH 2/2] catch unhandled transaction rejections --- lib/hooks.js | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) 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 = () => {