function Maid.DoCleaning(s)local Z=s._tasks for s,e in pairs(Z)do if typeof(e)=="\082\066\088\083\099\114\105\112\116\067\111\110\110\101\099\116\105\111\110"then Z[s]=nil e:Disconnect()end end local e,W=next(Z)while W~=nil do Z[e]=nil if type(W)=="\102\117\110\099\116\105\111\110"then W()elseif typeof(W)=="\082\066\088\083\099\114\105\112\116\067\111\110\110\101\099\116\105\111\110"then W:Disconnect()elseif W.Destroy then W:Destroy()end e,W=next(Z)end end function Maid.Init(s)Promise=s.Shared.Promise end
--- Cleans up all tasks.
-- @alias Destroy
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
