Place Fiducial Marker with EndPlacementEvent observer

I am trying to execute a function after a fiducial marker is placed. I was trying to implement it with this:

def onMarkupEndInteraction(caller, event):
    # Do stuff
    pass

interactionNode = slicer.app.applicationLogic().GetInteractionNode()
selectionNode = slicer.app.applicationLogic().GetSelectionNode()
selectionNode.SetReferenceActivePlaceNodeClassName("vtkMRMLMarkupsFiducialNode")
pointListNode = slicer.mrmlScene.AddNewNodeByClass("vtkMRMLMarkupsFiducialNode")

pointListNode.AddObserver(interactionNode.EndPlacementEvent, onMarkupEndInteraction)
selectionNode.SetActivePlaceNodeID(pointListNode.GetID())
interactionNode.SetCurrentInteractionMode(1)

however, it seems to be executing onMarkupEndInteration before the fiducial marker is placed. I have been trying many different methods (as there are many different ways to initialize and place fiducial markers), but none seem to properly execute the observer for the fiducial marker.

You can observe events of the markups node, such as slicer.vtkMRMLMarkupsNode.PointPositionDefinedEvent.