public static ISearchStream StartSearchStream(this IUserSession session, IEnumerable <string> track = null, IEnumerable <string> follow = null, IEnumerable <string> locations = null) { var searchStream = new SearchStream(); searchStream.SearchParameters = searchStream.ChangeSearchParameters(track, follow, locations); Func <Task <HttpResponseMessage> > startConnection = () => { if (searchStream.SearchParameters.EnsureOneOf(new[] { "track", "follow", "locations" }).IsFalse()) { return(null); } var request = session.CreatePost(TwitterApi.SearchStreaming("/1.1/statuses/filter.json"), searchStream.SearchParameters); var c = new HttpClient() { Timeout = TimeSpan.FromDays(1) }; return(c.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, searchStream.CancelStream.Token)); }; searchStream.CreateOpenConnection = startConnection; return(searchStream); }