function Promise.Yield(A)if A._fulfilled then return true,unpack(A._fulfilled,1,A._valuesLength)elseif A._rejected then return false,unpack(A._rejected,1,A._valuesLength)else local r=Instance.new("\066\105\110\100\097\098\108\101\069\118\101\110\116")A:Then(function()r:Fire()end,function()r:Fire()end)r.Event:Wait()r:Destroy()if A._fulfilled then return true,unpack(A._fulfilled,1,A._valuesLength)elseif A._rejected then return false,unpack(A._rejected,1,A._valuesLength)end end end
--[=[
	Yields until the promise is complete, then returns a boolean indicating
	the result, followed by the values from the promise.

	@yields
	@return boolean, T
]=]
function Promise:Yield()
	if self._fulfilled then
		return true, unpack(self._fulfilled, 1, self._valuesLength)
	elseif self._rejected then
		return false, unpack(self._rejected, 1, self._valuesLength)
	else
		local bindable = Instance.new("BindableEvent")

		self:Then(function()
			bindable:Fire()
		end, function()
			bindable:Fire()
		end)

		bindable.Event:Wait()
		bindable:Destroy()

		if self._fulfilled then
			return true, unpack(self._fulfilled, 1, self._valuesLength)
		elseif self._rejected then
			return false, unpack(self._rejected, 1, self._valuesLength)
		end
	end
end
