A CooldownService of any kind is just not useful. For a task so simple, a singleton is not needed at all. You could easily make your own module in seconds.
local cooldowns = { }
function cooldowns.new(time: number)
return setmetatable({
cooldown = time;
isCompleted = false;
}, {__index = cooldowns})
end
function cooldowns:cancel()
self.isCompleted = true
setmetatable(self, nil)
end
function cooldowns:start()
task.delay(self.cooldown, function()
self.isCompleted = true
end)
end
return cooldowns
As I recall, the reason for this service was to manage a large amount of cooldowns for specific values, such as having 3 cooldowns for a single player. The service is really not very useful and clearly has several ways to do the same with very few lines of code, but I still leave the service available in case beginner developers are interested and study the system to create their own implementations and thus evolve.