Wait for a target to mount and become visible — pages resolve targets while
their data is still loading in. rAF polling (not MutationObserver): at most
~120 cheap queries over the default 2s, and no observer teardown edge cases.
Resolves null on timeout, which callers treat as "skip this step".
Wait for a target to mount and become visible — pages resolve targets while their data is still loading in. rAF polling (not MutationObserver): at most ~120 cheap queries over the default 2s, and no observer teardown edge cases. Resolves null on timeout, which callers treat as "skip this step".