UDP connection: "Assertion Failed: Not on GameThread or SlateLoadingThread"

I am new to Unreal Engine and a lot of these things in general, so I have been scratching my head over this for about a week now. I am suffering a crashing error when connecting a drone over UDP to the application.

My UR application is a ground station for PX4 drone simulation. I am using Gazebo simulator to mock up some drones that connect to the UR application over UDP using MAVlink (using the MAVSDK API) to then be controlled by said UR application. In my drone class I have a member function that opens a UDP port to listen for connections on, a function to iterate through currently known systems, and a member function that wraps a callback from the API (subscribe_on_new_system(), found here Connecting to Systems (Vehicles) | MAVSDK Guide ).

In our program the game begins triggering a few different class objects to be created in blueprints and do their own set up, including the drone class. That is when the connections are opened so the game can listen for new drone connections. This part is completely fine, and the set up function that starts this happens to be the last node in blueprints for the drone class so far. The instant a drone is successfully connected and Gazebo shows output saying the drone is connected and ready for take off, the application crashes and I get:

Assertion failed: IsInGameThread() || IsInSlateThread() [File:D:\build\++UE5\Sync\Engine\Source\Runtime\SlateCore\Private\Widgets\SWidget.cpp] [Line: 1255] 
Slate can only be accessed from the GameThread or the SlateLoadingThread!

I have since then read into delegates and tried several ways of binding a delegate to the function I wrapped the callback in, and executing that delegate in the setup member function that initializes everything thinking that would force the function to be executed on the game thread,

// header, with other irrelevant bits removed
#include "Delegates/Delegate.h"

DECLARE_DELEGATE(FDroneCallbackDelegate);
FDroneCallbackDelegate _dronecallback1;

UFUNCTION(BlueprintCallable, Category = "Drone")
void InitDelegates();

// source
void USPDroneManager::InitDelegates() {
    _dronecallback1.BindWeakLambda(this,[this]()
        {
            mav.subscribe_on_new_system([this]() {
                LOG->Info(FString("New System found!"));
                });
        });
}
/* ^ I have also tried removing the inside code there and just calling the UFunction this is wrapped in, called NotifyNewSystem() as well*/ 

// Then inside of the set up function
InitDelegates();
if (_dronecallback1.IsBound()) {
    _dronecallback1.Execute();
}

But this still results in the same error as before. I have also tried an approach that uses AsyncTask()

// source
#include "Async/Async.h"

// Inside of the set up function
AsyncTask(ENamedThreads::GameThread,[this]()
    {
        mav.subscribe_on_new_system([this]() {
            LOG->Info(FString("New system found!"));
            });
    });
/* which like before, I also tried calling just the UFunction that wrapped that inside code as well just in case it would make any difference which would look like */
AsyncTask(ENamedThreads::GameThread,[this]()
    {
        NotifyNewSystem();
    });

But also no luck there. No matter what I seem to have the same crash message, and this ONLY occurs when a drone is found by the application.

The beginning of my CrashContext.xml looks like this across all approaches I’ve tried

<?xml version="1.0" encoding="UTF-8"?>
<FGenericCrashContext>
	<RuntimeProperties>
		<CrashVersion>3</CrashVersion>
		<ExecutionGuid>DD7612424FD43BC37C3326A9898DBA18</ExecutionGuid>
		<CrashGUID>UECC-Windows-754914A64AE951906ACFFBBC58A9D94F_0000</CrashGUID>
		<IsEnsure>false</IsEnsure>
		<IsStall>false</IsStall>
		<IsAssert>true</IsAssert>
		<CrashType>Assert</CrashType>
		<ErrorMessage>Assertion failed: IsInGameThread() || IsInSlateThread() [File:D:\build\++UE5\Sync\Engine\Source\Runtime\SlateCore\Private\Widgets\SWidget.cpp] [Line: 1255] 
Slate can only be accessed from the GameThread or the SlateLoadingThread!
</ErrorMessage>
		<CrashReporterMessage />
		<CrashReporterMessage>Attended</CrashReporterMessage>
		<ProcessId>10696</ProcessId>
		<SecondsSinceStart>39</SecondsSinceStart>
		<IsInternalBuild>false</IsInternalBuild>
		<IsPerforceBuild>false</IsPerforceBuild>
		<IsWithDebugInfo>true</IsWithDebugInfo>
		<IsSourceDistribution>false</IsSourceDistribution>
		<GameName>UE-DroneApplication</GameName>
		<ExecutableName>UnrealEditor-Win64-DebugGame</ExecutableName>
		<BuildConfiguration>DebugGame</BuildConfiguration>
		<GameSessionID />
		<PlatformName>WindowsEditor</PlatformName>
		<PlatformFullName>Win64 [Windows 10 (22H2) [10.0.19045.6093]  64b]</PlatformFullName>
		<PlatformNameIni>Windows</PlatformNameIni>
		<EngineMode>Editor</EngineMode>
		<EngineModeEx>Dirty</EngineModeEx>
		<DeploymentName />
		<EngineVersion>5.5.4-40574608+++UE5+Release-5.5</EngineVersion>
		<EngineCompatibleVersion>5.5.4-40574608+++UE5+Release-5.5</EngineCompatibleVersion>
		<CommandLine>&quot;C:\Users\lemonyoinker\Documents\Unreal Projects\droneapplication\droneapplication\droneapplication.uproject&quot; -skipcompile</CommandLine>
		<LanguageLCID>9</LanguageLCID>
		<AppDefaultLocale>en-US</AppDefaultLocale>
		<BuildVersion>++UE5+Release-5.5-CL-40574608</BuildVersion>
		<Symbols>**UE5*Release-5.5-CL-40574608-Win64-DebugGame</Symbols>
		<IsUERelease>true</IsUERelease>
		<IsRequestingExit>false</IsRequestingExit>
		<UserName />
		<BaseDir>C:/Program Files/Epic Games/UE_5.5/Engine/Binaries/Win64/</BaseDir>
		<RootDir>C:/Program Files/Epic Games/UE_5.5/</RootDir>
		<MachineId>47CFF5264F23A4507963909222844458</MachineId>
		<LoginId>47cff5264f23a4507963909222844458</LoginId>
		<EpicAccountId>aee819f3db584b78841613aecb37353c</EpicAccountId>
		<SourceContext>  434       
  435       			// Object was pending kill, so we cannot execute the delegate.  Note that it&apos;s important to assert
  436       			// here and not simply continue execution, as memory may be left uninitialized if the delegate is
  437       			// not able to execute, resulting in much harder-to-detect code errors.  Users should always make
  438       			// sure IsBound() returns true before calling ProcessDelegate()!
  439       			ObjectPtr = static_cast&lt;UObjectTemplate*&gt;(Object.Get());	// Down-cast
  440       			checkSlow( IsValid(ObjectPtr) );
  441       
  442       			// Object *must* implement the specified function
  443       			Function = ObjectPtr-&gt;FindFunctionChecked(FunctionName);
  444       		}
  445       
  446       		// Execute the delegate!
  447       		ObjectPtr-&gt;ProcessEvent(Function, Parameters);
  448 ***** 	}
  449       
  450       	[[nodiscard]] friend uint32 GetTypeHash(const TScriptDelegate&amp; Delegate)
  451       	{
  452       		FReadAccessScope ReadScope = Delegate.GetReadAccessScope();
  453       
  454       		return HashCombine(GetTypeHash(Delegate.Object), GetTypeHash(Delegate.GetFunctionName()));
  455       	}
  456       
  457       	template&lt;typename OtherThreadSafetyMode&gt;
  458       	static TScriptDelegate CopyFrom(const TScriptDelegate&lt;OtherThreadSafetyMode&gt;&amp; Other)
  459       	{
  460       		static_assert(std::is_same_v&lt;ThreadSafetyMode, typename UE::Core::Private::TScriptDelegateTraits&lt;ThreadSafetyMode&gt;::UnicastThreadSafetyModeForMulticasts&gt;);
  461       
  462       		typename TScriptDelegate&lt;OtherThreadSafetyMode&gt;::FReadAccessScope OtherReadScope = Other.GetReadAccessScope();
  463       </SourceContext>