This introduces some inelegance, unfortunately, in deciding when an assertion chain is done being a chain and can become a resolved-with-undefined promise.
But damn this code is getting ugly and opaque.
Negated versions work too.
Negated version also works.
Follows Chai's `.not.throw(Constructor, /regexp/)` semantics, i.e. the assertion only succeeds if both the constructor is different and the regexp doesn't match.
Now it just checks directly to ensure `broken` is a synonym for `rejected`.
Helps also for the case of a failing test, where Mocha prints out the entire line (just as in the list reporter).
That was an interesting trick!