JavaScript developers don't like hearing this but RxJS solves, or gives you the tools to solve, most of these problems.