diff --git a/src/__tests__/server.electron.js b/src/__tests__/server.electron.js index 557bd4751..ba8a54387 100644 --- a/src/__tests__/server.electron.js +++ b/src/__tests__/server.electron.js @@ -24,6 +24,7 @@ beforeAll(() => { } server = new Server(new LogManager(), mockStore); + return server.init(); }); test('servers starting at ports', done => { diff --git a/src/dispatcher/server.js b/src/dispatcher/server.js index dda29807d..dd4fa66a7 100644 --- a/src/dispatcher/server.js +++ b/src/dispatcher/server.js @@ -13,6 +13,7 @@ import type Client from '../Client.js'; export default (store: Store, logger: Logger) => { const server = new Server(logger, store); + server.init(); server.addListener('new-client', (client: Client) => { store.dispatch({ diff --git a/src/server.js b/src/server.js index f07018b20..2608330a0 100644 --- a/src/server.js +++ b/src/server.js @@ -44,6 +44,7 @@ export default class Server extends EventEmitter { connectionTracker: ConnectionTracker; logger: Logger; store: Store; + initialisePromise: Promise; constructor(logger: Logger, store: Store) { super(); @@ -52,7 +53,6 @@ export default class Server extends EventEmitter { this.certificateProvider = new CertificateProvider(this, logger); this.connectionTracker = new ConnectionTracker(logger); this.store = store; - this.init(); } on: ((event: 'new-client', callback: (client: Client) => void) => void) & @@ -60,12 +60,16 @@ export default class Server extends EventEmitter { ((event: 'clients-change', callback: () => void) => void); init() { - this.certificateProvider + this.initialisePromise = this.certificateProvider .loadSecureServerConfig() .then( options => (this.secureServer = this.startServer(SECURE_PORT, options)), - ); - this.insecureServer = this.startServer(INSECURE_PORT); + ) + .then(() => { + this.insecureServer = this.startServer(INSECURE_PORT); + return; + }); + return this.initialisePromise; } startServer(port: number, sslConfig?: SecureServerConfig) { @@ -232,9 +236,14 @@ export default class Server extends EventEmitter { }; }; - close() { - this.secureServer.stop(); - this.insecureServer.stop(); + close(): Promise { + if (this.initialisePromise) { + return this.initialisePromise.then(_ => { + this.secureServer.stop(); + this.insecureServer.stop(); + }); + } + return Promise.resolve(); } toJSON() {