code: def all_pages(method, request, accessor, cond=None):
      
      if cond is None:
          cond = lambda x: True
      result = []
      next_token = None
      while True:
          if next_token:
              request['nextToken'] = next_token
          response = method(**request)
          if cond(response):
              data = accessor(response)
              if data:
                  if isinstance(data, list):
                      result.extend(data)
                  else:
                      result.append(data)
          if 'nextToken' not in response:
              break
          next_token = response['nextToken']
  
      return result
docs: Helper to process all pages using botocore service methods (exhausts NextToken).
      note: `cond` is optional... you can use it to make filtering more explicit
      if you like. Alternatively you can do the filtering in the `accessor` which
      is perfectly fine, too
      Note: lambda uses a slightly different mechanism so there is a specific version in
      ramuda_utils.
  
      :param method: service method
      :param request: request dictionary for service call
      :param accessor: function to extract data from each response
      :param cond: filter function to return True / False based on a response
      :return: list of collected resources