APlayerState::PlayerId failing to replicate properly

I’ve got a delegate function serving as a callback function, that is asynchronously triggered (running soon after AGameMode::Login() is invoked). Within this callback function, I am updating the player id via APlayerState::SetPlayerId() . However, this change is never replicated to the client. However, if I create an additional function on my APlayerState child class as follows:

    // Header:
    UFUNCTION(Client, Reliable)
    void UpdatePlayerId(int32 NewPlayerId);

    // Implementation:
    void AMyGamePlayerState::UpdatePlayerId_Implementation(int32 NewPlayerId)
    {
        SetPlayerId(NewPlayerId);
    }

then calling this function does result in the RPC being triggered on the client and updating its local value for the player id. My question is: why? I thought that maybe SetPlayerId() failing meant that the APlayerState object was not yet ready for networking. However, the RPC works. Could it be because my APlayerState object is not ready for replication, but is ready for RPCs to be invoked?