docs: def iter_call(self, service, method, *args, **kwargs):
          """A generator that deals with paginating through results.
  
          :param service: the name of the SoftLayer API service
          :param method: the method to call on the service
          :param integer limit: result size for each API call (defaults to 100)
          :param \\*args: same optional arguments that ``Service.call`` takes
          :param \\*\\*kwargs: same optional keyword arguments that ``Service.call`` takes
  
          """
  
          limit = kwargs.pop('limit', 100)
          offset = kwargs.pop('offset', 0)
  
          if limit <= 0:
              raise AttributeError("Limit size should be greater than zero.")
  
          # Set to make unit tests, which call this function directly, play nice.
          kwargs['iter'] = False
          result_count = 0
          keep_looping = True
  
          while keep_looping:
              # Get the next results
              results = self.call(service, method, offset=offset, limit=limit, *args, **kwargs)
  
              # Apparently this method doesn't return a list.
              # Why are you even iterating over this?
              if not isinstance(results, transports.SoftLayerListResult):
                  if isinstance(results, list):
                      # Close enough, this makes testing a lot easier
                      results = transports.SoftLayerListResult(results, len(results))
                  else:
                      yield results
                      return
  
              for item in results:
                  yield item
                  result_count += 1
  
              # Got less results than requested, we are at the end
              if len(results) < limit:
                  keep_looping = False
              # Got all the needed items
              if result_count >= results.total_count:
                  keep_looping = False
  
              offset += limit