This seems interesting. Given Netflix's admitted love of RX [Reactive Extensions] I'm somewhat curious if there is a design reason that this uses Promises instead of (RxJS/Bacon/...) Observables. At first skim this seems like it could be even more useful as an Observable model.
I'm also curious if there is a design reason they aren't using ES5 defineProperty/ES6 property syntax over get()/set().