Related: #9987.
For consistency, if a public method accepts a timeout argument, it should also accept a retry argument. This is already the case with most of the methods, with two exceptions:
Client.get_service_account_email()
_AsyncJob.cancel()
These two methods should not call client._connection.api_request() directly, but instead the Client._call_api() method that wraps the former with an optional retry object.