function Maid.DoCleaning(i)local E=i._tasks for i,J in pairs(E)do if typeof(J)=="\082\066\088\083\099\114\105\112\116\067\111\110\110\101\099\116\105\111\110"then E[i]=nil J:Disconnect()end end local J,e=next(E)while e~=nil do E[J]=nil if type(e)=="\102\117\110\099\116\105\111\110"then e()elseif typeof(e)=="\082\066\088\083\099\114\105\112\116\067\111\110\110\101\099\116\105\111\110"then e:Disconnect()elseif e.Destroy then e:Destroy()end J,e=next(E)end end function Maid.Init(i)Promise=i.Shared.Promise end

function Maid:DoCleaning()
	local tasks = self._tasks

	-- Disconnect all events first as we know this is safe
	for index, task in pairs(tasks) do
		if (typeof(task) == "RBXScriptConnection") then
			tasks[index] = nil
			task:Disconnect()
		end
	end

	-- Clear out tasks table completely, even if clean up tasks add more tasks to the maid
	local index, task = next(tasks)
	while (task ~= nil) do
		tasks[index] = nil
		if (type(task) == "function") then
			task()
		elseif (typeof(task) == "RBXScriptConnection") then
			task:Disconnect()
		elseif (task.Destroy) then
			task:Destroy()
		end
		index, task = next(tasks)
	end
end


function Maid:Init()
	Promise = self.Shared.Promise
end

