SlideShare a Scribd company logo
Functional Reactive 
Programming in JS 
Mario Zupan 
@mzupzup 
Stefan Mayer 
@stefanmayer13
Who are we? 
@stefanmayer13 @mzupzup 
2
Motivation 
■ Technology stack re-evaluation 
■ Lessons learned 
■ Functional Programming 
■ QCon NYC 
[1] 
3
What is Functional Reactive 
Programming? 
4
Reactive Manifesto 
[2] 
5
Reactive Manifesto 
? ? 
? ? [2] 
6
Functional Programming 
■ Evaluation of mathematical functions 
■ Avoid mutable state 
■ Referential transparency 
■ Avoid side-effects 
■ Reusable functions over reusable object 
■ Function composition over object 
composition 
[1] 
7
Functional Programming 
■ map 
■ filter 
■ mergeAll 
■ reduce 
■ zip 
[3] 
[4] 8
var data = [1, 2, 3, 4, 5]; 
var numbers = data.map(function (nr) { 
return nr + 1; 
}); 
// numbers = [2, 3, 4, 5, 6] 
9
var data = [1, 2, 3, 4, 5, 6, 7]; 
var numbers = data.filter(function (nr) { 
return nr % 2 === 0; 
}); 
// numbers = [2, 4, 6] 
10
var data = [1, 2, 3, 4, 5, 6, 7]; 
var numbers = data.map(function (nr) { 
return nr + 1; 
}).filter(function (nr) { 
return nr % 2 === 0; 
}); 
// numbers = [2, 4, 6, 8] 
11
var data = [[1, 2], [3, 4], 5, [6], 7, 8]; 
var numbers = data.mergeAll(); 
// numbers = [1, 2, 3, 4, 5, 6, 7, 8] 
12
var data = [{ 
numbers: [1, 2] 
}, { 
numbers: [3, 4] 
}]; 
var numbersFlatMap = data.flatMap(function (object) { 
return object.numbers; 
}); 
// numbersMap = [[1, 2], [3, 4]] 
// numbersFlatMap = [1, 2, 3, 4] 
13
var data = [1, 2, 3, 4]; 
var sum = data.reduce(function(acc, value) { 
return acc + value; 
}); 
// sum = 10 
14
var data = [5, 7, 3, 4]; 
var min = data.reduce(function(acc, value) { 
return acc < value ? acc : value; 
}); 
// min = 3 
15
var array1 = [1, 2, 3]; 
var array2 = [4, 5, 6]; 
var array = Array.zip(array1, array2, 
function(left, right) { 
return [left, right]; 
}); 
// array = [[1, 4], [2, 5], [3, 6]] 
16
Reactive Programming 
■ Asynchronous data streams 
■ Everything is a stream 
● click events 
● user inputs 
● data from a server 
■ streams rock! 
17
Reactive Programming 
[5] 
18
F + R + P 
■ Powerful composition and aggregation of 
streams 
■ Good fit for concurrent and event-driven 
systems 
■ Declarative 
■ Easy to test 
[6] 
19
Observables 
■ Stream of data over time 
■ Hot vs cold observables 
■ Asynchronous 
■ Lazy 
■ queryable, bufferable, pausable… 
■ more than 120 operations 
[7] 
20
Observable Creation 
Rx.Observable.fromArray([1, 2, 3]); 
Rx.Observable.fromEvent(input, 'click'); 
Rx.Observable.fromEvent(eventEmitter, 'data', fn); 
Rx.Observable.fromCallback(fs.exists); 
Rx.Observable.fromNodeCallback(fs.exists); 
Rx.Observable.fromPromise(somePromise); 
Rx.Observable.fromIterable(function*() {yield 20}); 
21
Observable Basics 
var range = Rx.Observable.range(1, 3); // 1, 2, 3 
var range = range.subscribe( 
function(value) {}, 
function(error) {}, 
function() {} 
); 
optional 
22
Observable Basics 
var range = Rx.Observable.range(1, 10) // 1, 2, 3 ... 
.filter(function(value) { return value % 2 === 0; }) 
.map(function(value) { return "<span>" + value + "</span>"; }) 
.takeLast(1); 
var subscription = range.subscribe( 
function(value) { console.log("last even value: " + value); }); 
// "last even value: <span>10</span>" 
23
Cold Observables 
[8] 
24
Hot Observables 
[9] 
25
Autocomplete 
● Multiple requests 
● Async results 
● Race conditions 
● State 
● ... 
[10] 
26
Autocomplete 1/2 
var keyup = Rx.Observable.fromEvent(input, 'keyup') 
.map(function (e) { 
return e.target.value; // map to text 
}) 
.filter(function (input) { 
return input.length > 2; // filter relevant values 
}) 
.debounce(250) 
27
Autocomplete 2/2 
.distinctUntilChanged() // only if changes 
.flatMapLatest(doAsyncSearch() // do async search on server 
.retry(3)) 
.takeUntil(cancelStream) // cancel stream 
.subscribe( 
function (data) { // do UI stuff }, 
function (error) { // do error handling } 
); 
28
Drag & Drop 1/2 
var mousedown = Rx.Observable.fromEvent(dragTarget, 'mousedown'); 
var mousemove = Rx.Observable.fromEvent(document, 'mousemove'); 
var mouseup = Rx.Observable.fromEvent(dragTarget, 'mouseup'); 
[11] 
29
mousedown.flatMap(function (md) { 
// get starting coordinates 
var startX = md.offsetX, startY = md.offsetY; 
return mousemove.map(function (mm) { 
// return the mouse distance from start 
return {left: mm.clientX - startX, top: mm.clientY - startY }; 
}).takeUntil(mouseup); 
}).subscribe(function (pos) { 
// do UI stuff 
}); [11] 
30
Some Cool Stuff on Observables 
.bufferWithTime(500) 
.pausable(pauser), .pausableBuffered(..) 
.repeat(3) 
.skip(1), skipUntilWithTime(..) 
.do() // for side-effects like logging 
.onErrorResumeNext(second) // resume with other obs 
.window() // project into windows 
.timestamp() // add time for each value 
.delay() 31
RxJS 
Supported 
■ IE6+ 
■ Chrome 4+ 
■ FireFox 1+ 
■ Node.js v0.4+ 
Size (minified & gzipped): 
■ all - 23,1k 
■ lite - 13,5k 
■ compat - 12,5k 
■ ES5 core - 12k 
[12] 
32
Framework Bridges 
■ AngularJS 
■ ReactJS 
■ jQuery 
■ ExtJS 
■ NodeJS 
■ Backbone 
■ ... 
33
Companies using Rx in Production 
[13] 
34
Alternatives to RxJS 
■ BaconJS 
■ Kefir 
■ (Elm) 
35
Conclusion 
■ There is a learning curve 
■ Great abstraction for async & events 
■ Improves 
● Readability 
● Reusability 
● Scalability 
■ Both on the front- and backend 
36
Learning RxJS 
■ RxKoans 
○ https://github.com/Reactive-Extensions/RxJSKoans 
■ learnRx 
○ https://github.com/jhusain/learnrx 
■ The Introduction to Reactive Programming you've been 
missing 
○ https://gist.github.com/staltz/868e7e9bc2a7b8c1f754 
■ rxMarbles 
○ http://rxmarbles.com/ 
37
Image references 
■ 1 - http://www.ylies.fr/ 
■ 2 - http://www.reactivemanifesto.org 
■ 3 - http://reactivex.io/ 
■ 4 - https://raw.githubusercontent.com/wiki/ReactiveX/RxJava/ 
■ 5 - http://buildstuff14.sched.org/event/9ead0e99b3c1c0edddec6c7c8d526125#.VHEgq5PF-kQ 
■ 6 - http://www.cclscorp.com 
■ 7 - http://www.pharmmd.com/ 
■ 8 - http://blogs.msdn.com/ 
■ 9 - http://blogs.msdn.com/ 
■ 10 - https://www.google.at 
■ 11 - http://dockphp.com/ 
■ 12 - http://www.thechrisyates.com/ 
■ 13 - http://www.reactivex.io 
■ 14 - http://www.quickmeme.com/ 
38
Thank you 
@stefanmayer13 
@mzupzup 
[14] 
39

More Related Content

PPT
JavaScript & Dom Manipulation
PDF
RxJS & Angular Reactive Forms @ Codemotion 2019
PPTX
React-JS Component Life-cycle Methods
PPTX
Introduction to Facebook React
PPTX
PDF
Python testing using mock and pytest
PDF
JWT - To authentication and beyond!
PPTX
File system node js
JavaScript & Dom Manipulation
RxJS & Angular Reactive Forms @ Codemotion 2019
React-JS Component Life-cycle Methods
Introduction to Facebook React
Python testing using mock and pytest
JWT - To authentication and beyond!
File system node js

What's hot (20)

PPTX
Spring boot - an introduction
PDF
[125]웹 성능 최적화에 필요한 브라우저의 모든 것
PDF
JavaScript - Chapter 4 - Types and Statements
PDF
React for Beginners
PDF
The New JavaScript: ES6
PPTX
Express JS
PDF
Angular Observables & RxJS Introduction
PPTX
Javascript
PPTX
本当のオブジェクト指向は可読性を上げる
PPTX
Node.js File system & Streams
PDF
빌드관리 및 디버깅 (2010년 자료)
PPTX
Angular 14.pptx
PDF
Python Flask Tutorial For Beginners | Flask Web Development Tutorial | Python...
PDF
Callback Function
PDF
Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
PDF
JavaScript - Chapter 11 - Events
PDF
jQuery for beginners
PDF
Introduction to A-Frame
Spring boot - an introduction
[125]웹 성능 최적화에 필요한 브라우저의 모든 것
JavaScript - Chapter 4 - Types and Statements
React for Beginners
The New JavaScript: ES6
Express JS
Angular Observables & RxJS Introduction
Javascript
本当のオブジェクト指向は可読性を上げる
Node.js File system & Streams
빌드관리 및 디버깅 (2010년 자료)
Angular 14.pptx
Python Flask Tutorial For Beginners | Flask Web Development Tutorial | Python...
Callback Function
Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...
JavaScript - Chapter 11 - Events
jQuery for beginners
Introduction to A-Frame
Ad

Viewers also liked (16)

PPTX
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
PDF
[1B4]안드로이드 동시성_프로그래밍
PDF
Functional Reactive Programming With RxSwift
PDF
Cascadia.js: Don't Cross the Streams
PPTX
RxJS and Reactive Programming - Modern Web UI - May 2015
PDF
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015
PDF
혁신적인 웹컴포넌트 라이브러리 - Polymer
PDF
FalsyValues. Dmitry Soshnikov - ECMAScript 6
PDF
Module, AMD, RequireJS
PDF
Angular2 ecosystem
PDF
System webpack-jspm
PDF
Compose Async with RxJS
PPTX
React in Native Apps - Meetup React - 20150409
PDF
맛만 보자 액터 모델이란
PDF
React JS and why it's awesome
PDF
LetSwift RxSwift 시작하기
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
[1B4]안드로이드 동시성_프로그래밍
Functional Reactive Programming With RxSwift
Cascadia.js: Don't Cross the Streams
RxJS and Reactive Programming - Modern Web UI - May 2015
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015
혁신적인 웹컴포넌트 라이브러리 - Polymer
FalsyValues. Dmitry Soshnikov - ECMAScript 6
Module, AMD, RequireJS
Angular2 ecosystem
System webpack-jspm
Compose Async with RxJS
React in Native Apps - Meetup React - 20150409
맛만 보자 액터 모델이란
React JS and why it's awesome
LetSwift RxSwift 시작하기
Ad

Similar to Functional Reactive Programming with RxJS (20)

PDF
Functional Reactive Programming in JavaScript
PDF
RxJava on Android
PDF
オープンデータを使ったモバイルアプリ開発(応用編)
PDF
SF Big Analytics 20191112: How to performance-tune Spark applications in larg...
PDF
"Немного о функциональном программирование в JavaScript" Алексей Коваленко
PDF
How to practice functional programming in react
PPTX
ECMA5 and ES6 Promises
PDF
Go Says WAT?
PDF
LSFMM 2019 BPF Observability
PDF
ClojureScript loves React, DomCode May 26 2015
PDF
Douglas Crockford: Serversideness
PPS
CS101- Introduction to Computing- Lecture 35
PDF
JavaScript 2016 for C# Developers
PDF
Beyond Breakpoints: A Tour of Dynamic Analysis
PPTX
Workshop 1: Good practices in JavaScript
PDF
ECMAScript 6
PDF
JS Fest 2019. Anjana Vakil. Serverless Bebop
KEY
JavaScript Growing Up
PDF
RxJava applied [JavaDay Kyiv 2016]
PDF
The mighty js_function
Functional Reactive Programming in JavaScript
RxJava on Android
オープンデータを使ったモバイルアプリ開発(応用編)
SF Big Analytics 20191112: How to performance-tune Spark applications in larg...
"Немного о функциональном программирование в JavaScript" Алексей Коваленко
How to practice functional programming in react
ECMA5 and ES6 Promises
Go Says WAT?
LSFMM 2019 BPF Observability
ClojureScript loves React, DomCode May 26 2015
Douglas Crockford: Serversideness
CS101- Introduction to Computing- Lecture 35
JavaScript 2016 for C# Developers
Beyond Breakpoints: A Tour of Dynamic Analysis
Workshop 1: Good practices in JavaScript
ECMAScript 6
JS Fest 2019. Anjana Vakil. Serverless Bebop
JavaScript Growing Up
RxJava applied [JavaDay Kyiv 2016]
The mighty js_function

Recently uploaded (20)

PDF
Automating ArcGIS Content Discovery with FME: A Real World Use Case
PDF
SparkLabs Primer on Artificial Intelligence 2025
PPTX
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
PPTX
ChatGPT's Deck on The Enduring Legacy of Fax Machines
PDF
Smarter Business Operations Powered by IoT Remote Monitoring
PDF
agentic-ai-and-the-future-of-autonomous-systems.pdf
PDF
Test Bank, Solutions for Java How to Program, An Objects-Natural Approach, 12...
PDF
Dell Pro 14 Plus: Be better prepared for what’s coming
PDF
A Day in the Life of Location Data - Turning Where into How.pdf
PDF
DevOps & Developer Experience Summer BBQ
PDF
Event Presentation Google Cloud Next Extended 2025
PDF
madgavkar20181017ppt McKinsey Presentation.pdf
PDF
Chapter 2 Digital Image Fundamentals.pdf
PDF
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
PDF
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
PDF
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
PDF
Doc9.....................................
PDF
Top Generative AI Tools for Patent Drafting in 2025.pdf
Automating ArcGIS Content Discovery with FME: A Real World Use Case
SparkLabs Primer on Artificial Intelligence 2025
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
ChatGPT's Deck on The Enduring Legacy of Fax Machines
Smarter Business Operations Powered by IoT Remote Monitoring
agentic-ai-and-the-future-of-autonomous-systems.pdf
Test Bank, Solutions for Java How to Program, An Objects-Natural Approach, 12...
Dell Pro 14 Plus: Be better prepared for what’s coming
A Day in the Life of Location Data - Turning Where into How.pdf
DevOps & Developer Experience Summer BBQ
Event Presentation Google Cloud Next Extended 2025
madgavkar20181017ppt McKinsey Presentation.pdf
Chapter 2 Digital Image Fundamentals.pdf
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
Doc9.....................................
Top Generative AI Tools for Patent Drafting in 2025.pdf

Functional Reactive Programming with RxJS

  • 1. Functional Reactive Programming in JS Mario Zupan @mzupzup Stefan Mayer @stefanmayer13
  • 2. Who are we? @stefanmayer13 @mzupzup 2
  • 3. Motivation ■ Technology stack re-evaluation ■ Lessons learned ■ Functional Programming ■ QCon NYC [1] 3
  • 4. What is Functional Reactive Programming? 4
  • 6. Reactive Manifesto ? ? ? ? [2] 6
  • 7. Functional Programming ■ Evaluation of mathematical functions ■ Avoid mutable state ■ Referential transparency ■ Avoid side-effects ■ Reusable functions over reusable object ■ Function composition over object composition [1] 7
  • 8. Functional Programming ■ map ■ filter ■ mergeAll ■ reduce ■ zip [3] [4] 8
  • 9. var data = [1, 2, 3, 4, 5]; var numbers = data.map(function (nr) { return nr + 1; }); // numbers = [2, 3, 4, 5, 6] 9
  • 10. var data = [1, 2, 3, 4, 5, 6, 7]; var numbers = data.filter(function (nr) { return nr % 2 === 0; }); // numbers = [2, 4, 6] 10
  • 11. var data = [1, 2, 3, 4, 5, 6, 7]; var numbers = data.map(function (nr) { return nr + 1; }).filter(function (nr) { return nr % 2 === 0; }); // numbers = [2, 4, 6, 8] 11
  • 12. var data = [[1, 2], [3, 4], 5, [6], 7, 8]; var numbers = data.mergeAll(); // numbers = [1, 2, 3, 4, 5, 6, 7, 8] 12
  • 13. var data = [{ numbers: [1, 2] }, { numbers: [3, 4] }]; var numbersFlatMap = data.flatMap(function (object) { return object.numbers; }); // numbersMap = [[1, 2], [3, 4]] // numbersFlatMap = [1, 2, 3, 4] 13
  • 14. var data = [1, 2, 3, 4]; var sum = data.reduce(function(acc, value) { return acc + value; }); // sum = 10 14
  • 15. var data = [5, 7, 3, 4]; var min = data.reduce(function(acc, value) { return acc < value ? acc : value; }); // min = 3 15
  • 16. var array1 = [1, 2, 3]; var array2 = [4, 5, 6]; var array = Array.zip(array1, array2, function(left, right) { return [left, right]; }); // array = [[1, 4], [2, 5], [3, 6]] 16
  • 17. Reactive Programming ■ Asynchronous data streams ■ Everything is a stream ● click events ● user inputs ● data from a server ■ streams rock! 17
  • 19. F + R + P ■ Powerful composition and aggregation of streams ■ Good fit for concurrent and event-driven systems ■ Declarative ■ Easy to test [6] 19
  • 20. Observables ■ Stream of data over time ■ Hot vs cold observables ■ Asynchronous ■ Lazy ■ queryable, bufferable, pausable… ■ more than 120 operations [7] 20
  • 21. Observable Creation Rx.Observable.fromArray([1, 2, 3]); Rx.Observable.fromEvent(input, 'click'); Rx.Observable.fromEvent(eventEmitter, 'data', fn); Rx.Observable.fromCallback(fs.exists); Rx.Observable.fromNodeCallback(fs.exists); Rx.Observable.fromPromise(somePromise); Rx.Observable.fromIterable(function*() {yield 20}); 21
  • 22. Observable Basics var range = Rx.Observable.range(1, 3); // 1, 2, 3 var range = range.subscribe( function(value) {}, function(error) {}, function() {} ); optional 22
  • 23. Observable Basics var range = Rx.Observable.range(1, 10) // 1, 2, 3 ... .filter(function(value) { return value % 2 === 0; }) .map(function(value) { return "<span>" + value + "</span>"; }) .takeLast(1); var subscription = range.subscribe( function(value) { console.log("last even value: " + value); }); // "last even value: <span>10</span>" 23
  • 26. Autocomplete ● Multiple requests ● Async results ● Race conditions ● State ● ... [10] 26
  • 27. Autocomplete 1/2 var keyup = Rx.Observable.fromEvent(input, 'keyup') .map(function (e) { return e.target.value; // map to text }) .filter(function (input) { return input.length > 2; // filter relevant values }) .debounce(250) 27
  • 28. Autocomplete 2/2 .distinctUntilChanged() // only if changes .flatMapLatest(doAsyncSearch() // do async search on server .retry(3)) .takeUntil(cancelStream) // cancel stream .subscribe( function (data) { // do UI stuff }, function (error) { // do error handling } ); 28
  • 29. Drag & Drop 1/2 var mousedown = Rx.Observable.fromEvent(dragTarget, 'mousedown'); var mousemove = Rx.Observable.fromEvent(document, 'mousemove'); var mouseup = Rx.Observable.fromEvent(dragTarget, 'mouseup'); [11] 29
  • 30. mousedown.flatMap(function (md) { // get starting coordinates var startX = md.offsetX, startY = md.offsetY; return mousemove.map(function (mm) { // return the mouse distance from start return {left: mm.clientX - startX, top: mm.clientY - startY }; }).takeUntil(mouseup); }).subscribe(function (pos) { // do UI stuff }); [11] 30
  • 31. Some Cool Stuff on Observables .bufferWithTime(500) .pausable(pauser), .pausableBuffered(..) .repeat(3) .skip(1), skipUntilWithTime(..) .do() // for side-effects like logging .onErrorResumeNext(second) // resume with other obs .window() // project into windows .timestamp() // add time for each value .delay() 31
  • 32. RxJS Supported ■ IE6+ ■ Chrome 4+ ■ FireFox 1+ ■ Node.js v0.4+ Size (minified & gzipped): ■ all - 23,1k ■ lite - 13,5k ■ compat - 12,5k ■ ES5 core - 12k [12] 32
  • 33. Framework Bridges ■ AngularJS ■ ReactJS ■ jQuery ■ ExtJS ■ NodeJS ■ Backbone ■ ... 33
  • 34. Companies using Rx in Production [13] 34
  • 35. Alternatives to RxJS ■ BaconJS ■ Kefir ■ (Elm) 35
  • 36. Conclusion ■ There is a learning curve ■ Great abstraction for async & events ■ Improves ● Readability ● Reusability ● Scalability ■ Both on the front- and backend 36
  • 37. Learning RxJS ■ RxKoans ○ https://github.com/Reactive-Extensions/RxJSKoans ■ learnRx ○ https://github.com/jhusain/learnrx ■ The Introduction to Reactive Programming you've been missing ○ https://gist.github.com/staltz/868e7e9bc2a7b8c1f754 ■ rxMarbles ○ http://rxmarbles.com/ 37
  • 38. Image references ■ 1 - http://www.ylies.fr/ ■ 2 - http://www.reactivemanifesto.org ■ 3 - http://reactivex.io/ ■ 4 - https://raw.githubusercontent.com/wiki/ReactiveX/RxJava/ ■ 5 - http://buildstuff14.sched.org/event/9ead0e99b3c1c0edddec6c7c8d526125#.VHEgq5PF-kQ ■ 6 - http://www.cclscorp.com ■ 7 - http://www.pharmmd.com/ ■ 8 - http://blogs.msdn.com/ ■ 9 - http://blogs.msdn.com/ ■ 10 - https://www.google.at ■ 11 - http://dockphp.com/ ■ 12 - http://www.thechrisyates.com/ ■ 13 - http://www.reactivex.io ■ 14 - http://www.quickmeme.com/ 38
  • 39. Thank you @stefanmayer13 @mzupzup [14] 39

Editor's Notes

  • #8: Bevor functional reactive programming -> functional Im Gegensatz zu imperativ wird mit mathematischen funktionen gearbeitet. Instruktionen Mapping Input -> Output immer gleich unabhängig vom ausführungszeitpunkt Immutable
  • #9: FP umfasst großes Gebiet
  • #10: ----- Meeting Notes (27/11/14 18:27) ----- Transformieren
  • #14: Numbers Attribut
  • #15: Bisher alle Operationen nur auf 1 Element der Collection
  • #17: Schluss
  • #27: Probleme von suggest erklären: Bei Eingaben zuviele requests race conditions by async (späterer request kann früher zurückkommen)
  • #28: Probleme von suggest erklären: zuviele requests, statefull, race conditions by async
  • #32: pausable nur auf hot observables