Also, we need to specify a timeout for the gen_server call and handle the exception that will be raised if we hit it -- or decide that we trust the internal timeout and specify infinity.

If we do set a gen_server:call timeout, then we have to use try/catch to handle the exception it will throw when it fires. In that situation, we also need to consider how to treat the port. Seems like the safest assumption is that the port is stuck and needs to be killed.