Thanks for the reply, Frank. Because these are of af:popup type, I thought I might get lucky and be able to reuse some code. To that end, there's no access to the launchPopupListener property because of the JHS generated component type.
So instead, I'm attempting your approach with a popupFetchListener on the af:popup component. Should I be wary of any sort of interesting, yet undesirable behavior that could be introduced?