If a get-request is in-flight and the active node goes down, you’ll hit a RequestCancelledException. This one you definitely want to use falling back to the getFromReplica. For the other cases, it depends which retry strategy (configurable on the environment) you use: the default one is best-effort, so it will keep retrying the op (rescheduling) until the timeout hits, so you’ll get a timeout exception there. If you use fail fast, then it immediately short-circuits and you get a RequestCancelledException again.
You can use either of those, it depends a little on your use case. I’d say RCE for sure, and how and when to retry on a timeout depends on your app.