Monad and Reactive programming for JavaScript, leveraging Q promises