fix(q.js): if rejection handler throws an exception, promise should be rejected

per Promise/A+ spec