What's the best way to synchronise weapon and player animations?

My character is set up as above.
The weapon actor is a child of the character actor’s mesh, attached to a hand socket to correctly position it.
There are animations for both weapon and player, some of which need to be played in synchronisation (e.g. firing the gun).

What is the best way to have synchronised animations across two different actors?
Ideally, the player’s animation states should double as states for the weapon, but I’m not sure how to do this and the state machine does not allow function calls from within states.