If there's a pure, deterministic implementation of a combinator, which works in the general case regardless of external effects, then nobody is gaining anything by keeping the potentially dodgy implementation around. 

Using a library like Rx should free you from the mental tax of thinking about whether effects like timing delays will affect the behaviour of your stream combinators. You should aim to write code that works on pure values, and rely on the library to handle applying it to effectful streams.

Just write the safe version. IMHO.