code: func (client *Client) ListWithContext(ctx context.Context, g Listable) (s []interface{}, err error) {
  	s = make([]interface{}, 0)
  
  	defer func() {
  		if e := recover(); e != nil {
  			if g == nil || reflect.ValueOf(g).IsNil() {
  				err = fmt.Errorf("g Listable shouldn't be nil, got %#v", g)
  				return
  			}
  
  			panic(e)
  		}
  	}()
  
  	req, e := g.ListRequest()
  	if e != nil {
  		err = e
  		return
  	}
  	client.PaginateWithContext(ctx, req, func(item interface{}, e error) bool {
  		if item != nil {
  			s = append(s, item)
  			return true
  		}
  		err = e
  		return false
  	})
  
  	return
  }
docs: // ListWithContext lists the given resources (and paginate till the end)