initChannel(userId = null) {
        return new Promise(resolve => {
            if (userId === null) {
                // don't do HTTP request to same user again, get data from localStorage

                // check if cache expired
                if (this.isChannelCacheExpired()) {
                    userId = this.getChannelCurrentUser().id;
                    this._initChannelLoad(userId, resolve);
                } else {
                    // not expired, get last messages from cache
                    const messages = this.getChannelMessages();
                    resolve(messages);
                }
            } else {
                this._initChannelLoad(userId, resolve);
            }
        });
    }
Initializes new private message channel
when user opens private message window
by clicking on Private message from PM notifications
or by clicking send PM button on user profile page

Stores in localStorage current user data
and last 12 messages
If already initialized doesn't do HTTP request again

Whenever there is initialized PM channel,
on each request PM window is opened

Supports only one opened PM window and channel at the same time
When new PM to new user is initialized - old one is destroyed / overridden

@param {Number|String} userId

@returns Promise