Rx is a library for composing asynchronous and event-based programs using observable collections. It has a strong theoretical basis using the duality between the classic Iterator and Observer design patterns to simplify controlling asynchrony. Rx allows defining and combining asynchronous data streams through declarative query operators.