code: def _ListActiveBreakpoints(self, service):
      
      try:
        response = service.debuggees().breakpoints().list(
            debuggeeId=self._debuggee_id, waitToken=self._wait_token,
            successOnTimeout=True).execute()
        if not response.get('waitExpired'):
          self._wait_token = response.get('nextWaitToken')
          breakpoints = response.get('breakpoints') or []
          if self._breakpoints != breakpoints:
            self._breakpoints = breakpoints
            native.LogInfo(
                'Breakpoints list changed, %d active, wait token: %s' % (
                    len(self._breakpoints), self._wait_token))
            self.on_active_breakpoints_changed(copy.deepcopy(self._breakpoints))
      except BaseException:
        native.LogInfo('Failed to query active breakpoints: ' +
                       traceback.format_exc())
  
        # Forget debuggee ID to trigger repeated debuggee registration. Once the
        # registration succeeds, the worker thread will retry this query
        self._debuggee_id = None
  
        return (True, self.list_backoff.Failed())
  
      self.list_backoff.Succeeded()
      return (False, 0)
docs: Single attempt query the list of active breakpoints.
  
      Must not be called before the debuggee has been registered. If the request
      fails, this function resets self._debuggee_id, which triggers repeated
      debuggee registration.
  
      Args:
        service: client to use for API calls
  
      Returns:
        (registration_required, delay) tuple