Fixing the memory leak for remaining semaphores means we can go back to using async transfers on other OSes with our own timeout management again.