excellent post. I tried ur code. It works. I have 2 questions though.
Charles Chang

You can pass three functions, read the Last tip part where I explain how to do this.

The static keyword is the ECMASCRIPT2015 way to do this:

Observable.fromEvent = …

We don’t need the fromEvent on the prototype in this case.