public async Task CatchOtherExceptionAndReturnProperResult()
        {
            var searchEngine = new TestSearchEngine("John", "Joe", "Sarah");
            var lookuper     = GetLookuper(searchEngine);

            searchEngine.SetActionsWithRepeatingTheLastOneForever(new TestSearchEngineThrowExceptionAction());

            var searchResults = lookuper.Lookup(TextsForKeyPresses("Jo"));

            await searchResults.ShouldHaveSearchResults(new[] { "<< ERROR >>" });
        }
        public async Task SearchShouldBeCancellableAndReturnProperResult()
        {
            var searchEngine = new TestSearchEngine("John", "Joe", "Sarah");
            var lookuper     = GetLookuper(searchEngine, timeoutDueTime: TimeSpan.FromMinutes(1));

            searchEngine.SetActionsWithRepeatingTheLastOneForever(new TestSearchEngineInfiniteAction());

            var searchResultAssertTask = lookuper.Lookup(TextsForKeyPresses("Jo"))
                                         .ShouldHaveSearchResults(new[] { "<< CANCEL >>" });

            await searchEngine.SearchBeginnings.FirstAsync(); // wait for ["Jo"] to be started processing

            lookuper.Cancel();

            await searchResultAssertTask;
        }