GameMode->RestartPlayer() not working

I’m making a simple competitive team game where you play as balls. I’m trying to get respawn working in my code (specifically respawn when falling out of bounds), and found the GameMode->RestartPlayer(PlayerController) method that supposedly does just that. However, calling the function with a reference to my player controller does nothing. Can somebody help me figure out what I’m doing wrong? I spent some time looking through the Shooter Game source, but still wasn’t able to figure it out.

Here’s my code:

////////////////////////////////
// BallPawn.cpp
////////////////////////////////
void ABallPawn::Tick(float DeltaTime) {
	Super::Tick(DeltaTime);

	// ...

	// Check for out of bounds
	{
		if (GetActorLocation().Z < -1000.0f) {
			GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("PLAYER KILLED"));
			Cast<ABallPlayerController>(GetController())->Respawn();
		}
	}

	// ...
}

////////////////////////////////
// BallPlayerController.cpp
////////////////////////////////
void ABallPlayerController::Respawn() {
	GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Blue, TEXT("RESPAWN"));
	GetWorld()->GetAuthGameMode()->RestartPlayer(this);
}

The debug messages are being spammed to the screen, yet the ball is not respawned. It just falls endlessly.