Client function called on Authority actor

I migrated my project from 4.7 to 4.8 and some network code stoped working as it was in previous version.

I have this code in my PlayerState class:

void AYPlayerState::NotifyStartBattle()
{
	if (Role == ROLE_Authority)
	{
		ClientNotifyStartBattle();
	}
	// ... some initialization code
}

UFUNCTION(Client, Reliable)
void ClientNotifyStartBattle();

void AYPlayerState::ClientNotifyStartBattle_Implementation()
{
	NotifyStartBattle();
}

NotifyStartBattle is used to setup properties that needed for my battle logic and is called from server-side battle manager actor. Idea is to run this initialization on server (the actor with authority) and on owning client to keep everything in sync. This setup worked fine in 4.7 but in 4.8 it causes recursion which leads to stack overflow and crash. Looks like when I call ClientNotifyStartBattle it does not call a remote client, but just executes right here on the same object, that it should not according to documentation.
If I put AddOnScreenDebugMessage inside ClientNotifyStartBattle_Implementation it prints a message for both server and client, though it should be called only once.

I have tested it only in PIE multiplayer session using single process, because other modes is broken for me (there’s couple of questions in AnswerHub already).

So my question - is it a bug or intended behaviour, which was introduced in 4.8?