private async _load()

in src/auth/window-flow.ts [42:88]


  private async _load(): Promise<string> {
    const authRequest = await this._requestBuilder.prepareAuthRequest(
      {request_credentials: 'required', auth_mode: 'bypass_to_login'},
      {nonRedirect: true},
    );

    return new Promise((resolve, reject) => {
      this.reject = reject;
      let cleanRun: boolean;

      const cleanUp = () => {
        if (cleanRun) {
          return;
        }
        cleanRun = true;
        /* eslint-disable no-use-before-define */
        removeStateListener();
        removeTokenListener();
        /* eslint-enable no-use-before-define */

        this._loginWindow?.close();
        clearTimeout(this._timeoutId);
      };

      const removeTokenListener = this._storage.onTokenChange(token => {
        if (token) {
          cleanUp();
          resolve(token.accessToken);
        }
      });

      const removeStateListener = this._storage.onStateChange(authRequest.stateId, state => {
        if (state && state.error) {
          cleanUp();
          reject(new AuthResponseParser.AuthError(state));
        }
      });

      if (!this._loginWindow || (this._loginWindow && this._loginWindow.closed)) {
        this._loginWindow = this._openWindow(authRequest.url);
      } else if (this._loginWindow) {
        this._loginWindow.location.href = authRequest.url;
      }

      this.checkIsClosed();
    });
  }