This should be able to accept a -1 for no timeout
This should be able to accept a -1 for no timeout