
local function throttle(callspersecond, fn)
	local time = 0
	local count = 0

	return function(...)
		local now = core.get_us_time()
		if (now - time) > 1000000 then
			-- reset time
			time = now
			count = 0
		else
			-- check max calls
			count = count + 1
			if count > callspersecond then
				return
			end
		end

		return pcall(fn, ...)
	end

end


return throttle
