diff --git a/src/node/server.js b/src/node/server.js index a6ddc4039..6d1351520 100755 --- a/src/node/server.js +++ b/src/node/server.js @@ -50,6 +50,7 @@ const express = require('./hooks/express'); const hooks = require('../static/js/pluginfw/hooks'); const pluginDefs = require('../static/js/pluginfw/plugin_defs'); const plugins = require('../static/js/pluginfw/plugins'); +const {Gate} = require('./utils/promises'); const stats = require('./stats'); const logger = log4js.getLogger('server'); @@ -67,14 +68,6 @@ const State = { let state = State.INITIAL; -class Gate extends Promise { - constructor(executor = null) { - let res; - super((resolve, reject) => { res = resolve; if (executor != null) executor(resolve, reject); }); - this.resolve = res; - } -} - const removeSignalListener = (signal, listener) => { logger.debug(`Removing ${signal} listener because it might interfere with shutdown tasks. ` + `Function code:\n${listener.toString()}\n` + diff --git a/src/node/utils/promises.js b/src/node/utils/promises.js index 0c8dc24f3..b9529d305 100644 --- a/src/node/utils/promises.js +++ b/src/node/utils/promises.js @@ -54,3 +54,15 @@ exports.timesLimit = async (total, concurrency, promiseCreator) => { } await Promise.all(promises); }; + +/** + * An ordinary Promise except the `resolve` executor function is exposed as a property. + */ +class Gate extends Promise { + constructor(executor = null) { + let res; + super((resolve, reject) => { res = resolve; if (executor != null) executor(resolve, reject); }); + this.resolve = res; + } +} +exports.Gate = Gate;