Moin Peter,
so ganz habe ich die Funktion Deined Skriptes nicht verstanden, und Dein Listener wird am Ende nicht gelöscht.
Ich habe Deinen Code etwas umgeschrieben:
Ich erzeuge in der Funktion PlaceGunTest ein Object mit Constructor, der Deinen Code ausführt und die Methode removeListener zum Löschen des Listeners zur Verfogung stellt.
Damit ereiche ich, dass alle Variablen innerhalb des Objektes sichtbar sind und Methode removeListener von außen aufzurufen ist.
erzeugt ein neues Objekt in placeGunText und führt den Constructorbereich aus.
entfernt den eventListener,
sollte den Speicher bei der nächsten Ausführung des Garbage Collectors wieder freigeben.
Meines Wissens nach nur durch Neustart von InDesign.
HTH