changed the way timeouts are handled, added errors.TimeoutError