Summary
The publishProfileEvent function in extensions/nostr/src/nostr-profile.ts creates a per-relay timeout promise via setTimeout, but never clears the timer when the publish succeeds. Each relay produces an orphaned timer.
Reproduction
Source inspection: line 102-103 creates setTimeout without storing or clearing the handle.
Expected
Timer should be cleared in finally after Promise.race settles.
Scope
extensions/nostr/src/nostr-profile.ts:100-106 — 1 file, ~8 LoC change.
Summary
The
publishProfileEventfunction inextensions/nostr/src/nostr-profile.tscreates a per-relay timeout promise viasetTimeout, but never clears the timer when the publish succeeds. Each relay produces an orphaned timer.Reproduction
Source inspection: line 102-103 creates
setTimeoutwithout storing or clearing the handle.Expected
Timer should be cleared in
finallyafterPromise.racesettles.Scope
extensions/nostr/src/nostr-profile.ts:100-106— 1 file, ~8 LoC change.