Modernize API with Promises backwards compatibly (2)

Rebase + requested prose on promises being rejected with MediaStreamError.