Basil Crow Good point, I commented on that ticket. I think that the approach from this PR could be tweaked a bit to use https://github.com/jenkinsci/workflow-step-api-plugin/pull/51 (if a setter was added) to change the value of FlowInterruptedException.actualInterruption from true to false when the exception propagates past the timeout step that threw the exception, in which case the fix for this issue would fix that issue as well.
catchError and warnError are not as affected as retry as I first thought, because they catch all interruptions by default, and only rethrow them if the user passes catchInterruptions: false (I thought the default was true).
A fix for this issue has been released in Pipeline: Basic Steps Plugin 2.19 and Pipeline: Build Step Plugin 2.11. Both plugins must be updated for the fix to take effect. Thanks Jonathan B for reporting the issue!