function Observable.Subscribe(p,w,I,y)local x=Subscription.new(w,I,y)local X=p._onSubscribe(x)if X then x:_giveCleanup(X)end return x end return Observable
--[=[
	Subscribes immediately, fireCallback may return a maid (or a task a maid can handle)
	to clean up

	@param fireCallback function?
	@param failCallback function?
	@param completeCallback function?
	@return MaidTask
]=]
function Observable:Subscribe(fireCallback, failCallback, completeCallback)
	local sub = Subscription.new(fireCallback, failCallback, completeCallback)
	local cleanup = self._onSubscribe(sub)

	if cleanup then
		sub:_giveCleanup(cleanup)
	end

	return sub
end

return Observable
