FTimerDelegate Throws Vague Exception

I am trying to implement an weapon swapping system using the FTimerDelegate. The basic Idea is that equip is called once holster is finished. I declare my FTimerDelegate like so:

UCLASS()
class AXLCharacter : public ACharacter
{
	GENERATED_BODY()

public: 

        // .....

	FTimerDelegate TimerDelegate_SwitchWeapon;

        //...
}

My code that implements the FTimerDelegate is below:

float AXLCharacter::EquipWeapon(uint32 Weapon)
{
	float Duration = 0.0f;
	if (CharacterWeapons->Inventory.Num() > 0)
	{
		if (CurrentWeapon)
		{
			float Duration = HolsterWeapon() * 10;

			TimerDelegate_SwitchWeapon.BindUFunction(this, FName("EquipWeapon"), Weapon);
			GetWorldTimerManager().SetTimer(TimerHandle_SwitchWeapon, TimerDelegate_SwitchWeapon, Duration, false);
		}
		else
		{
			try
			{
				CurrentWeapon = CharacterWeapons->Inventory[Weapon];
				Duration = CurrentWeapon->StartEquip("RightHand");
			}
			catch (std::exception const & ex)
			{
				ex;
			}
		}
	}
	return Duration;
}
float AXLCharacter::HolsterWeapon()
{
	float Duration = 0.0f;
	if (CurrentWeapon)
	{
		Duration = CurrentWeapon->StartUnequip();
		CurrentWeapon = NULL;
	}
	return Duration;
}

The initial equip works great and holster the weapon works great. But when switch the holster section of the code run fine a the timer successfully calls equip. but when trying to execute the code DelegateInstanceInterface.h throw the following exception:

This give me no information, I have no idea what the issue it. If someone has any ideas – I would appreciate the help