Streaming ResultSets in Spanner can be retried/resumed automatically using a resume_token. The current implementation uses a hardcoded resume policy that basically says 'If the error code is Unavailable, then retry up to 10 times'. This should be configurable, and preferably use a similar implementation as the Storage client. See also #5165 (comment)