Why does Event On Possess not get called on dedicated server?

I’m using a very thin C++ class on top of PlayerController, which only adds an event for the PlayerState OnRep callback (which is not exposed to blueprint by default.)

UCLASS()
class MINERSHOOTER_API AMinerPlayerController : public APlayerController
{
	GENERATED_BODY()

public:

	void OnRep_PlayerState() override;

	UFUNCTION(BlueprintImplementableEvent)
	void PlayerState_OnRep();
};

When I play in the editor, “as client,” and the editor starts a separate server that the client listens to, that server does not log any messages I print inside “Event On Possess” in my PlayerController class.

Also, things that are supposed to happen on the server on possession, don’t happen.

So, what could cause this event not get called on the dedicated server? Am I misunderstanding when it’s supposed to be called?

Inside Event Begin Play, the Get Controlled Pawn pawn is available, for what that’s worth.
Is Event On Possess only useful if switching pawns while already playing?