Try using viztask to keep track of the flow of your program. You can yield until a signal is sent when your enter node3D is clicked on.
Code:
import viztask
s = viztask.Signal()
def MyTask():
yield s.wait()
#save your data
viztask.schedule( MyTask() )
vizact.onpick(enter_node, s.send)