Decorating Promises Without Breaking Them

How to add convenience methods to a native Promise object without subclassing, wrapping, or changing what await returns.