code: func (s *IDsScanner) Scan() bool {
  	if s.done {
  		return false
  	}
  
  	select {
  	case <-s.ctx.Done():
  		s.err = s.ctx.Err()
  		s.done = true
  		return false
  	default:
  	}
  
  	s.start++
  	if len(s.ids) > 0 && len(s.ids) > s.start {
  		return true
  	}
  
  	if s.next == "" && s.called {
  		s.done = true
  		return false
  	}
  
  	s.start = 0
  	res, err := s.caller.Do()
  	if err != nil {
  		s.err = err
  		s.done = true
  		return false
  	}
  
  	s.called = true
  	s.ids = res.MemberIDs
  	s.next = res.Next
  	s.caller.setContinuationToken(s.next)
  
  	return true
  }
docs: // Scan method