code: def retryable(fn, protocol=None):
      
      def wrapper(self, *args, **kwargs):
          pool = self._choose_pool(protocol)
  
          def thunk(transport):
              return fn(self, transport, *args, **kwargs)
  
          return self._with_retries(pool, thunk)
  
      wrapper.__doc__ = fn.__doc__
      wrapper.__repr__ = fn.__repr__
  
      return wrapper
docs: Wraps a client operation that can be retried according to the set
      :attr:`RiakClient.retries`. Used internally.