diff --git a/app/model/Hub.js b/app/model/Hub.js index 558fefab963c645d371f36af6f92382321ae6802..c630a028b87f2181cfb20ebeb71a76b0d2d42a50 100644 --- a/app/model/Hub.js +++ b/app/model/Hub.js @@ -39,39 +39,23 @@ class Hub { let indexLambda = index.bind(this) let unindexLambda = unindex.bind(this) - this.wait = (id, locations) => { - let rejectCallback = null - - let promise = (async () => { - let promise = new Promise((resolve, reject) => { - this.drivers[id] = { - resolve: resolve, - reject: reject - } - - // Keep reject callback. - rejectCallback = reject - - // Index locations. - indexLambda(id, locations) - }) - - try { - let userId = await promise - return userId - } finally { - // Remove indexed locations. - unindexLambda(id, locations) + this.waitAsync = async (id, locations) => { + let promise = new Promise((resolve, reject) => { + this.drivers[id] = { + resolve: resolve, + reject: reject } - })() - return { - promise: promise, + // Index locations. + indexLambda(id, locations) + }) - reject (err) { - rejectCallback(err) - } - } + let userId = await promise + + // Remove indexed locations. + unindexLambda(id, locations) + + return userId } } @@ -82,6 +66,10 @@ class Hub { pick (id, userId) { this.drivers[id].resolve(userId) } + + reject (id, reason) { + this.drivers[id].reject(reason) + } } module.exports = Hub