more specific exceptions, after timeout check if there was another error and raise that instead