NetMulticast function doesn't always execute when called on client

I made this 2 functions:

    UFUNCTION(Server, Reliable)
	void ServerAttack();
	void ServerAttack_Implementation();
	UFUNCTION(NetMulticast, Reliable)
	void MulticastRotateToControllerYaw();
	void MulticastRotateToControllerYaw_Implementation();

The attack function is just bound to the input and calls the RotateToControllerYaw function

void ABaseCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
	Super::SetupPlayerInputComponent(PlayerInputComponent);
	PlayerInputComponent->BindAction(TEXT("Attack"), IE_Pressed, this, &ABaseCharacter::ServerAttack);
}

void ABaseCharacter::ServerAttack_Implementation()
{
	MulticastRotateToControllerYaw();
}

void ABaseCharacter::MulticastRotateToControllerYaw_Implementation()
{
	FRotator playerRotation = GetActorRotation();
	FRotator controllerRotation = GetControlRotation();
	playerRotation.Yaw = controllerRotation.Yaw;
	SetActorRotation(playerRotation);
}

Everything works fine on the server but on the client:

If called for the server - Works every time but sometimes rotates correctly and sometimes does it very weirdly and with snappy movement(eg turns 180 degrees, then turns back to the correct location)

If called on the client - the pawn always rotates correctly on the server, on the client it sometimes rotates and sometimes just stays in place, it just seems random