TestHarness.expectException returns a Promise, making it unsuitable for synchronous tests. There are a couple of options: 1) Do nothing: write tests that need expectException as async tests. 2) Create a separate synchronous version of expectException, with a new name. 3) Have expectException alter its behavior based on the return value of the `work` function. Option 1 feels oppressive. Option 2 is unsightly, but straightforward. Option 3 is elegant, but obtuse and potentially surprising. I'm leaning toward 2.