now when timeout is set to 0, the behavior is exactly the same that witout timeout