SetTimer does not call the function

It is very strange, but the function SetTimer does not call the call-back function.

UWorld* UKLocalPlayer::GetWorld() const
{
	check(GEngine);
	check(GEngine->GameViewport);
	UGameInstance* GameInstance = GEngine->GameViewport->GetGameInstance();
	return GameInstance->GetWorld();
}

FTimerManager& UKLocalPlayer::GetWorldTimerManager() const
{
	return GetWorld()->GetTimerManager();
}

void UKLocalPlayer::LeaveGame(const FText& InMessage /*= FText::GetEmpty()*/, float InDelay /*= 3.0f*/)
{
#if !UE_SERVER
	FTimerDelegate TimerDelegate;
	TimerDelegate = FTimerDelegate::CreateUObject(this, &ThisClass::LeaveGameDelayed);
	FTimerHandle TempHandle;
	GetWorldTimerManager().SetTimer(TempHandle, TimerDelegate, InDelay, false);

	if (!InMessage.IsEmpty())
		MessageToast(InMessage, InDelay);
#endif
}

#if !UE_SERVER

void UKLocalPlayer::LeaveGameDelayed()
{
	Exec(GetWorld(), TEXT("quit"), *GLog);
}

#endif

The function LeaveGameDelayed() is never called.

Something changed with 4.13 ?

Txs.

I might be wrong but this line:

TimerDelegate = FTimerDelegate::CreateUObject(this, &ThisClass::LeaveGameDelayed);

shouldn’t &ThisClass be &UKLocalPlayer instead?

Edit:

When I use SetTimer I use this overload and it works for me:

GetWorld()->GetTimerManager().SetTimer(timerHandle, this, &APenguin::SetCameraView, 0.5f, false);

It is the same. ThisClass works for objects derived from UObject.