Level streaming / Actors / BeginPlay

So if we have game with a persistent level and multiple streamed sub-levels, then when an Actor is streamed in, its BeginPlay() is called. This is fine so long as the actor is autonomous, but what happens if in the BeginPlay() it references another actor that is yet to be asynchronously loaded? How do we ensure that all dependent objects are ready before starting to execute behaviours?

Of course we could probably use FStreamableManager to tell us when everything has streamed in, but that might cause a big performance spike. Do we have to write additional management code to achieve this? And can we write in such a way that it is transparent to blueprint creators?