https://blog.soshace.com/rxjs-methods-part2/