FRP hits back with a more aggressive stance: everything is a stream, that is event sources, transformations, data sinks.
From DOM elements, attributes, classes, innerHTML, but also components, dialog boxes, views, data models, RPC calls to the server and responses. Everything communicates through the same Observable interface, so it's much easier to make things just work.
Our job is now just to combine these streams together with the usual map, reduce, filter, etc.
In return we'll have code that's easily about 50% to 90% shorter with uncompromised performance whilst testability and quality are improved by a good order of magnitude.