В ES2015, как я могу гарантировать, что все методы ждут инициализации объекта? С ES7 декораторами?

У меня есть класс ES2015, который подключается к удаленному сервису.

Проблема в том, что мой код пытается получить доступ к этому классу до того, как его объект завершил соединение с удаленным сервером.

Я хочу убедиться, что методы не просто выдают ошибку, если объект не завершил инициализацию.

В моем классе будет много методов, которые зависят от того, какое соединение установлено и работает, поэтому было бы хорошо, если бы существовал единый, простой для понимания механизм, который можно было бы применить ко всем методам, таким как @ensureConnected decorator.

Скрипка здесь:https://jsfiddle.net/mct6ss19/2/

'use strict';

class Server {
    helloWorld() {
        return "Hello world"
    }
}

class Client {
    constructor() {
            this.connection = null
            this.establishConnection()
    }

    establishConnection() {
        // simulate slow connection setup by initializing after 2 seconds
        setTimeout(() => {this.connection= new Server()}, 2000)
    }

    doSomethingRemote() {
            console.log(this.connection.helloWorld())
    }

}

let test = new Client();
// doesn't work because we try immediately after object initialization
test.doSomethingRemote();
// works because the object has had time to initialize
setTimeout(() => {test.doSomethingRemote()}, 3000)

Я создавал образы, используя ES7-декораторы для реализации теста, чтобы увидеть, установлено ли соединение, но я не вижу, как это сделать.

Ответы на вопрос(2)

Ваш ответ на вопрос