test suite: bomb on errors unless they were expected. catch is now a function, not a macro