AISenses: new listeners are registered before BodyActor is set

Hi, I am creating a new AI sense in C++. When a new listener is registered for that specific sense, I would like to perform some operations on the pawn who is actually listening, e.g., logging. So I am writing a new function to be called whenever a new listener is registered by the perception system:

UAISense_Heat::UAISense_Heat()
{
	OnNewListenerDelegate.BindUObject(this, &UAISense_Heat::OnNewListenerImpl);
}

void UAISense_Heat::OnNewListenerImpl(const FPerceptionListener& NewListener)
{
	check(NewListener.GetBodyActor()); // <- this fails!

	UE_LOG(LogTemp, Log, TEXT("New listener: %s"), *NewListener.GetBodyActorName().ToString());
}

As you can see from the comment, there is a problem with the listener’s BodyActor, which should point at the Pawn possessed by NewListener.Listener->GetOwner(), which is the AIController that is listening for this sense. The BodyActor is not set though, because when OnNewListenerImpl is invoked the AIController did not possess the pawn yet.

I can already think about a workaround: creating a new class inheriting from AAIController, that executes a delegate whenever it possesses a pawn, and binding a function that logs the new listener to that delegate, right at the beginning of OnNewListenerImpl.

So, my actual question is: is this intentional? And if it is, is there a better workaround to get a reference to the BodyActor when OnNewListenerImpl() is called? Something that would require creating new classes and forcing the sense to depend from them?

Thanks in advance.