Type '{ @metatable JovanMeta, Jovan}' could not be converted into '{| Modules: {| [string]: boolean |} |}'

I recently got into using strict Lua and I got this warning
'{ @metatable JovanMeta, Jovan}' could not be converted into '{| Modules: {| [string]: boolean |} |}'
the warning only happens when the module’s __call is fired in strict mode btw

--!strict
local ServerScriptService = game:GetService("ServerScriptService")
local ServerStorage = game:GetService("ServerStorage")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Promise = require(ReplicatedStorage.JovanClient.Modules.Promise)
local Modules = script.Modules

local Jovan = {}
local JovanMeta = {}

-- Types

export type table = {
	[any] : any
}

-- Modules

Jovan.Modules = {
	ss = ServerStorage,
	sss = ServerScriptService,
}

-- Load

local services = game:GetChildren()
for i = 1, #services do
	if pcall(function()
		local t = services[i]
	end) then
		Jovan.Modules[services[i].ClassName:lower()] = services[i]
	end
end

local moduletbl = Modules:GetChildren()
local sharedtbl = ReplicatedStorage.JovanClient.Modules:GetChildren()
for i = 1, #moduletbl do
	if not moduletbl[i]:IsA("ModuleScript") then continue end
	Jovan.Modules[moduletbl[i].Name:lower()] = require(moduletbl[i])
end
for i = 1, #sharedtbl do
	if not sharedtbl[i]:IsA("ModuleScript") then continue end
	Jovan.Modules[sharedtbl[i].Name:lower()] = require(sharedtbl[i])
end

-- Functions

local ImportTimeout = 5

-- @promise \
-- Import a Jovan library.
local function ImportPromise(self, Name : string)
	local result
	Name = Name:lower()
	Promise.new(function(resolve, reject)
		local now = os.clock()
		if self.Modules[Name] then
			resolve(self.Modules[Name])
		else
			repeat task.wait() until self.Modules[Name] or os.clock() - now >= ImportTimeout
			if os.clock() -  now >= ImportTimeout then
				reject()
			else resolve(self.Modules[Name]) end
		end
	end):andThen(function(body) result = body end)
	return result
end
JovanMeta.__call = ImportPromise

-- Adds a module to the list of Jovan libraries.
function Jovan:AddModule(Name : string, module : table | ModuleScript)
	local import = ((typeof(module) == table) and module) or require(module)
	Modules[Name:lower()] = import
end

return setmetatable(Jovan, JovanMeta)