Skip to content

Commit f9aeebd

Browse files
grdsdevclaude
andcommitted
fix(gotrue): prevent double completion of refresh token completer
Check if the completer is already completed before calling completeError in dispose() to avoid "Bad state: Future already completed" errors during concurrent dispose operations. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
1 parent 5c25dda commit f9aeebd

1 file changed

Lines changed: 4 additions & 1 deletion

File tree

packages/gotrue/lib/src/gotrue_client.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1351,7 +1351,10 @@ class GoTrueClient {
13511351
_onAuthStateChangeControllerSync.close();
13521352
_broadcastChannel?.close();
13531353
_broadcastChannelSubscription?.cancel();
1354-
_refreshTokenCompleter?.completeError(AuthException('Disposed'));
1354+
final completer = _refreshTokenCompleter;
1355+
if (completer != null && !completer.isCompleted) {
1356+
completer.completeError(AuthException('Disposed'));
1357+
}
13551358
_autoRefreshTicker?.cancel();
13561359
}
13571360

0 commit comments

Comments
 (0)