--[[**
	Runs the specified function in a separate thread, without yielding the current thread. Unlike spawn, it doesn't have a delay and doesn't obscure errors like spawn or coroutines do. Also allows passing arguments like coroutines do.

	@param [t:callback] Function The function you are executing.
	@param [variant] ... The optional arguments you can pass that the function will execute with.
	@returns [void]
**--]]

function Scheduler.Spawn(Function, ...)
	assert(t.callback(Function))
	local Thread = coroutine.create(Call)
	return Finish(Thread, coroutine.resume(Thread, Function, ...))
end
