The way you’re doing it right now is only executing on the server. It’s not casting because it’s trying to reach the clients HUD that only exists on the client. You would need to run the rest with a replicated event set to Run on Owning Client in the player controller after Respawn Player.
I’ve always created the widgets off Begin Play in the HUD class. I don’t think it makes much difference doing it there or the player controller. I’ve found the UI can sometimes not be there in multiplayer if you don’t run it off a timer of some sort though. Which I don’t think is any different in either method. The player controller already has references to its HUD too.