public static Task <IReadOnlyList <IMember> > FetchMembersAsync(this IRestClient client, Snowflake guildId, int limit = 1000, Snowflake?startFromId = null, IRestRequestOptions options = null)
        {
            if (limit == 0)
            {
                return(Task.FromResult(ReadOnlyList <IMember> .Empty));
            }

            if (limit <= 1000)
            {
                return(client.InternalFetchMembersAsync(guildId, limit, startFromId, options));
            }

            var enumerator = client.EnumerateMembers(guildId, limit, startFromId, options);

            return(enumerator.FlattenAsync());
        }
        public static Task <IReadOnlyList <IMember> > FetchMembersAsync(this IRestClient client,
                                                                        Snowflake guildId, int limit = Discord.Limits.Rest.FetchMembersPageSize, Snowflake?startFromId = null,
                                                                        IRestRequestOptions options  = null, CancellationToken cancellationToken = default)
        {
            Guard.IsGreaterThanOrEqualTo(limit, 0);

            if (limit == 0)
            {
                return(Task.FromResult(ReadOnlyList <IMember> .Empty));
            }

            if (limit <= 1000)
            {
                return(client.InternalFetchMembersAsync(guildId, limit, startFromId, options, cancellationToken));
            }

            var enumerator = client.EnumerateMembers(guildId, limit, startFromId, options);

            return(enumerator.FlattenAsync(cancellationToken));
        }