https://medium.com/@mattias.trnqvist/converting-observables-into-promises-and-promises-into-observables-in-rxjs-a-comprehensive-guide-a9186913da20