function Observable.Pipe(z,T)assert(type(T)=="\116\097\098\108\101","\066\097\100 \116\114\097\110\115\102\111\114\109\101\114\115")local b=z for T,z in pairs(T)do assert(type(z)=="\102\117\110\099\116\105\111\110","\066\097\100 \116\114\097\110\115\102\111\114\109\101\114")b=z(b)assert(Observable.isObservable(b))end return b end
--[=[
	Transforms the observable with the following transformers

	```lua
	Rx.of(1, 2, 3):Pipe({
		Rx.map(function(result)
			return result + 1
		end);
		Rx.map(function(value)
			return ("%0.2f"):format(value)
		end);
	}):Subscribe(print)

	--> 2.00
	--> 3.00
	--> 4.00
	```
	@param transformers { (observable: Observable<T>) -> Observable<T> }
	@return Observable<T>
]=]
function Observable:Pipe(transformers)
	assert(type(transformers) == "table", "Bad transformers")

	local current = self
	for _, transformer in pairs(transformers) do
		assert(type(transformer) == "function", "Bad transformer")
		current = transformer(current)
		assert(Observable.isObservable(current))
	end

	return current
end
