Make it possible to use 0 as timeout when calling read.
Make watch take a recursive argument