This document introduces reactive extensions (Rx) which allow treating asynchronous data streams as collections that can be queried. Rx defines observables for pushing asynchronous events to observers. Operators allow composable querying and manipulation of observable sequences. Asynchronous operations can be modeled as observables. Rx supports concurrency and synchronization across threads and environments like JavaScript.