testEnv.sleep() not returning

Ok… That smells a lot like the issue I mentioned above. The only thing though is that this would not affect the workflow that started the activity / completed. That would affect other workflows on the same server (ie. running concurrently with the first workflow, or started afterward). Are you starting other workflows / child workflows?

I’m now able to confirm that putting the async execution back into the handler is causing the sleep to block.

Yeah… We strongly recommend not doing anything async in signal handlers, as in-progress async handlers will not prevent your workflow from completing. See my other answer here for more details on this subject.