Then the gen_server timeout is sufficient. That call will automatically timeout on the client side, so we don't need to start any timers. The only thing we'd need to do is to keep the timestamp of when the wait call was originally issued, and if the current time exceeds the length of the timeout we clean up the state.