GrahamA: add test case for when wrapped component throws exception. Introduce thin wrapping of Semaphore for test readability.