Not sure how to handle legacy but the way to do this that preserves ES6 semantics is `PromiseSubclass.__proto__ = Promise` instead of copying them all over.