The issue is that because the actor is destroyed the multicast function doesn’t get called on any of the clients (commenting out the destroy function and it works). I thought about calling Destroy() on a timer after some arbitrary “enough” time for the multicast function to get called but this feels very inelegant and hacky.
If the Actor is Replicated and you call Destroy on the server it will also call Destroy on the Client eventually so you don’t really need any Multicast. Cleanup is exactly what the Destroy Event is for, it should never call any latent functions on the Actor that is being destroyed.