From 3606589ff2ce460038104f350add384ab88e0859 Mon Sep 17 00:00:00 2001 From: Erik Erikson Date: Tue, 6 Feb 2018 16:35:16 -0800 Subject: [PATCH] Do not double-reject errors Calling .then here creates a new promise. One that is not returned and generating a rejection within that promise can lead to unhandledRejection events being inappropriately raised. As such, don't declare unneeded variables. --- lib/classes/Variables.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/classes/Variables.js b/lib/classes/Variables.js index a6842c4b3..ffbe65f3a 100644 --- a/lib/classes/Variables.js +++ b/lib/classes/Variables.js @@ -36,9 +36,9 @@ class PromiseTracker { const promise = prms; promise.waitList = `${variable} waited on by: ${specifier}`; promise.state = 'pending'; - promise.then( - (value) => { promise.state = 'resolved'; return Promise.resolve(value); }, - (error) => { promise.state = 'rejected'; return Promise.reject(error); }); + promise.then( // creates a promise with the following effects but that we otherwise ignore + () => { promise.state = 'resolved'; }, + () => { promise.state = 'rejected'; }); this.promiseList.push(promise); this.promiseMap[variable] = promise; return promise; @@ -393,7 +393,7 @@ class Variables { ].join(''); ret = BbPromise.reject(new this.serverless.classes.Error(errorMessage)); } - this.tracker.add(variableString, ret, propertyString); + ret = this.tracker.add(variableString, ret, propertyString); } return ret; }