private void Search(string query)
        {
            _searchedFor = query;

            var context = new UserSearchLoadContext(query)
            {
                SearchType = _searchType,
            };

            DataManager.Current.Load<UserSearch>(
                context,
                (results) =>
                {
                    UserSearch = results;
                },
                (bad) =>
                {
                    UserSearch = null;
                });
        }
        private void ProcessManyWaves()
        {
            if (_mangoWaves != null && _mangoWaves.Count > 0)
            {
                var oneGroup = _mangoWaves.Dequeue();

                var context = new UserSearchLoadContext(oneGroup)
                {
                    SearchType = _searchType,
                };

                DataManager.Current.Load<UserSearch>(
                    context,
                    (results) =>
                    {
                        if (results != null && results.NotYetFriends != null)
                        {
                            foreach (var entry in results.NotYetFriends)
                            {
                                var id = entry.UserId;
                                if (!_mangoResults.ContainsKey(id)) // slow
                                {
                                    _mangoResults[id] = entry;
                                }
                            }

                            ProcessManyWaves();
                        }
                    },
                    (bad) =>
                    {
                        ProcessManyWaves();
                        // TODO: ...?
                    });
            }
            else
            {
                _mangoWaves = null;

                // Done!
                if (_mangoResults != null && _mangoResults.Count > 0)
                {
                    var allResults = new List<CompactUser>(_mangoResults.Values);

                    var fake = new FakeUserSearch
                    {
                        NotYetFriends = allResults
                    };

                    UserSearch = fake;
                }

                _mangoResults = null;
            }
        }