frontend: Replace use of errors.Cause with errors.Is.
Created by: varungandhi-src
errors.UnwrapAll
(called internally by errors.Cause
) can return a more 'bare'
error than the original error created by errors.New
. This means that
errors.Cause
would have 0 stack frames; comparing that to a result from
errors.New
(with 1 stack frame) would fail.
Thanks to this counter-intuitive behavior, switching over the result
of errors.Cause
is (ahem) error-prone; it MUST NOT be compared directly
with the result of errors.New
. errors.Is
does not suffer from this problem.
Fixes issue #33697 (closed); we had code paths for making sure that we showed the un-highlighted file on HSS timeouts, but that code path was not triggered because we weren't checking the error's identity properly.
I think it is better to be paranoid here given that a regression in this functionality
adversely affects customers in a meaningful way. That is why I've added a test
here for seemingly trivial functionality. The test should hopefully prevent someone
from carelessly "cleaning up" the if-else chain to use errors.Cause
+ switch
.
Test plan
Added automated test.