Dynamic multicast delegate crash

I have a BlueprintAssignable dynamic multicast delegate created in C++, and called via C++ with Broadcast(). The Broadcast() function is called outside of the game thread.

If I assign a blueprint event to this delegate, and use a Create Widget node in this event, it will cause an assertion failure in Obj.cpp:925

check(IsInGameThread() || HasAnyFlags(RF_ClassDefaultObject|RF_ArchetypeObject) || IsPostLoadThreadSafe() || IsA(UClass::StaticClass()))

I solved it by wrapping the Broadcast() call in a GameThread task:

  AsyncTask(ENamedThreads::GameThread, []() {});

This appears to be a bug to me, and caught me off guard. Shouldn’t the responders to a Broadcast be posting to the GameThread anyway?

Creating UObjects/Widgets and generally everything besides a plain C classes are not supported from outside the game thread.

No, it is not a bug.

Wasn’t there some upgrade to this not long ago or it is still valid thing?

Nope, as far as I know it wasn’t patched and probably won’t be patched at all (maybe only for widgets but ai doubt) however the question marked for UE4.16.