If you don't have any experience with functional reactive programming, we strongly recommend to gain some basic overview first with ReactiveX intro or with The introduction to Reactive Programming you've been missing written by @andrestaltz.
See our GitHub page: github.com/marblejs/marble
If we think closely how typical HTTP API works we can quickly recognize that it deals with streams of asynchonous events also called as HTTP requests. Describing it very briefly - typically each request needs to be transformed into response that goes back to the client (which is our event initiator) using custom middlewares or designated endpoints. In reactive programming world, all those core concepts we can translate into very simple marble diagram:
In this world everyting is a stream. The core concept of Marble.js is based on the event flow of marble diagrams which can be used to visually express time based behaviour of HTTP streams. Ok, but why the heck we need those
Marble.js requires node v8.0 or higher:
$ npm i @marblejs/core rxjs
or if you are a hipster:
$ yarn add @marblejs/core rxjs