So I'm trying to make a NPC that follows you by using raycasting and Humanoid:MoveTo(), I think it's nearly done, but the problem is the function to find the target doesn't even return the thing that it's clearly supposed to. In the same indent as the return, it is supposed to print something, it does print it, but when I do print(FindTarget()), it outputs nil. This is my code, any help?

function FindTarget()
	local DONE = nil
	for i,v in pairs(workspace:GetChildren()) do
		if v:FindFirstChildOfClass("Humanoid") then
			local root = v:FindFirstChild("HumanoidRootPart")
			if root then
				local FastCastModule = require(script:WaitForChild("FastCast"))
				local FastCast = FastCastModule.new()
				FastCast:FireWithBlacklist(char:WaitForChild("HumanoidRootPart",1).Position,(root.Position - char.HumanoidRootPart.Position).Unit * 500,100,{script.Parent})
				FastCast.RayHit:connect(function(hit,pos,_,_,bullet)
					if hit and hit.Parent then
						if hit.Parent == root.Parent then
							print(root.Position)
							DONE = root.Position
						end
					end
				end)
			end
		end
		if DONE ~= nil then return DONE end
	end
end

while wait(.1) do
	print(FindTarget())
end
--[[
	Output:
		[Vector3]
		nil
]]