If you do `sema:wait(1e9)` then it almost immediately returns timeout, which is definitely not the desired behavior.