timeout = 0 leads to erratic behaviour. 

Allowing timeout = 0 is to be considered unsafe