RxJS includes a bindNodeCallback observable creator specifically for creating observables from async functions that use Node-style callbacks.
You could use it like this:
const getCoinbaseAsObservable = Observable.bindNodeCallback(
callback => this.w.eth.getCoinbase(callback)
);
let coinbaseObservable = getCoinbaseAsObservable();
coinbaseObservable.subscribe(
result => { /* do something with the result */ },
error => { /* do something with the error */ }
);
Note that an arrow function is used to ensure the getCoinbase method is called using this.w.ethas its context.