I'm trying to make a script that will grab an npc in which you can throw them afterwards.

if input.UserInputType == Enum.UserInputType.MouseButton2 and clicked then
		local welddb
		clicked = false
		if firstrc then
			firstrc = false
			GrabHitHandling = humanoid.Touched:Connect(function(hit, limb)
				if not isGrabbing then
					grabAnimate:Play()
					wait(.55)
					if limb.Name == "RightHand" or limb.Name == "RightUpperArm" or limb.Name == "RightLowerArm" then
						isGrabbing = true
						target = hit.Parent:FindFirstChild("Humanoid")
						if target then
							EntInv:InvokeServer(player, target)
							GrabbingVar:FireServer(isGrabbing)
							local d = target.Parent:GetDescendants()
							grabbedAnimate = target:LoadAnimation(grabbed)
							grabbedAnimate.Looped = false
							for i = 1, #d do
								local desc = d[i]
								if desc.Name == "Head" then
									if not character.RightHand:FindFirstChild("Weld") and not welddb then
										print("6")
										local weld = Instance.new("Weld")
										weld.Part0 = character.RightHand
										weld.Part1 = target.Parent.Head
										weld.Parent = character.RightHand
										welddb = true
									end
								end
							end
							if not grabbedAnimate.IsPlaying and not grabbingAnimate.IsPlaying then
								print("7")
								grabbedAnimate:Play()
								idleAnimate:Stop()
								grabbingAnimate:Play()
								print("7.5")
							end
						elseif not target and GrabHitHandling then
							GrabHitHandling:Disconnect()
							wait(4/5)
							clicked = true
						end
					end
				elseif limb.Name ~= "RightHand" or limb.Name ~= "RightUpperArm" or limb.Name ~= "RightLowerArm" and GrabHitHandling then
					GrabHitHandling:Disconnect()
					wait(4/5)
					clicked = true
				end
			end)
		elseif not firstrc and isGrabbing then
			print("8")
			local origmotorparent
			local socket
			local markerdb = true
			local throwBody = throwAnimate:GetMarkerReachedSignal("ThrowBody")
			throwAnimate:Play()
			print("9")
			local welddb = true
			if throwAnimate.IsPlaying and markerdb then
				print("10")
				local thrBody = throwBody:Connect(function()
					print("11")
					markerdb = false
   					local d = target.Parent:GetDescendants()
    				for i=1,#d do
        				local desc = d[i]
        				if desc:IsA("Motor6D") then
							print("12") -- should print 15 times
							origmotorparent = desc.Parent
           					socket = Instance.new("BallSocketConstraint")
           					local part0 = desc.Part0
           					local joint_name = desc.Name
            				local attachment0 = desc.Parent:FindFirstChild(joint_name.."Attachment") or desc.Parent:FindFirstChild(joint_name.."RigAttachment")
         					local attachment1 = part0:FindFirstChild(joint_name.."Attachment") or part0:FindFirstChild(joint_name.."RigAttachment")
            				if attachment0 and attachment1 then
                				socket.Attachment0, socket.Attachment1 = attachment0, attachment1
                				socket.Parent = desc.Parent
                				desc.Parent = game.ServerStorage
            				end    
       					end
    				end
					if welddb then
						print("13")
						character.RightHand.Weld:Destroy()
						welddb = false
					end
					print("14")
					grabbingAnimate:Stop()
					grabbedAnimate:Stop()
--					local bodythrust = Instance.new("BodyThrust")
--					bodythrust.Force = Vector3.new(9999,9999,9999)
--					bodythrust.Location = workspace.CurrentCamera.CFrame.lookVector
--					bodythrust.Parent = target.Parent.UpperTorso
--					wait(.4)
--					bodythrust:Destroy()
					wait(3)
					print("15")
					for _, desc in pairs(game.ServerStorage:GetDescendants()) do
						if desc:IsA("Motor6D") then
							print("16") -- 15 times
							desc.Parent = origmotorparent
							socket:Destroy()
						end
					end
					isGrabbing = false
					firstrc = true
					clicked = true
					markerdb = true
					print("Throw/Grab loop done")
				end)
				if thrBody and firstrc == true then
					thrBody:Disconnect()
				end
			end
		end
	end

For some reason, past the

local thrBody = throwBody:Connect(function() 

line, everything is printing for the number of times I have grabbed and thrown in that run. Any ideas?