Skip to content

Commit 21523b1

Browse files
committed
Guard against multiple login promises at the same time
1 parent edb505c commit 21523b1

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

src/remote/remote.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ export class Remote {
6161

6262
// Used to race between the login dialog and the logging in from a different window
6363
private loginDetectedResolver: (() => void) | undefined;
64+
private loginDetectedRejector: ((reason?: Error) => void) | undefined;
6465
private loginDetectedPromise: Promise<void> = Promise.resolve();
6566

6667
public constructor(
@@ -78,8 +79,14 @@ export class Remote {
7879
* Creates a new promise that will be resolved when login is detected in another window.
7980
*/
8081
private createLoginDetectionPromise(): void {
81-
this.loginDetectedPromise = new Promise<void>((resolve) => {
82+
if (this.loginDetectedRejector) {
83+
this.loginDetectedRejector(
84+
new Error("Login detection cancelled - new login attempt started"),
85+
);
86+
}
87+
this.loginDetectedPromise = new Promise<void>((resolve, reject) => {
8288
this.loginDetectedResolver = resolve;
89+
this.loginDetectedRejector = reject;
8390
});
8491
}
8592

@@ -90,6 +97,7 @@ export class Remote {
9097
if (this.loginDetectedResolver) {
9198
this.loginDetectedResolver();
9299
this.loginDetectedResolver = undefined;
100+
this.loginDetectedRejector = undefined;
93101
}
94102
}
95103

0 commit comments

Comments
 (0)