Consider this: Cancel/Exception -> 1. Retry -> 2. Retry
The second retry will check the build that was canceled or throw an exception instead of looking at 1. Retry,
since those build won't have any eval information cached, evaluation cannot be read from a cache.