@@ -139,15 +139,17 @@ const SEARCH_FILTERS: (keyof FilterPatternFlyFilters)[] = ['name', 'section', 'c
139139 * @param {FilterPatternFlyFilters } filters - Available filters for PatternFly data.
140140 * @param [mcpResources] - An optional map of available PatternFly documentation entries to search.
141141 * Internally, defaults to `getPatternFlyMcpResources.resources`
142- * @param [signal] - Optional abort signal; breaks the resource loop when aborted.
142+ * @param [settings] - Optional settings object
143+ * @param [settings.signal] - Optional abort signal; breaks the resource loop when aborted.
144+ * @param [settings.signalError] - Optional error to throw when aborted.
143145 * @returns {Promise<FilterPatternFlyResults> } - Filtered PatternFly results.
144146 * - `byEntry`: Array of filtered documentation entries.
145147 * - `byResource`: Map of filtered resources by resource name.
146148 */
147149const filterPatternFly = async (
148150 filters : FilterPatternFlyFilters | undefined ,
149151 mcpResources ?: Promise < PatternFlyMcpAvailableResources > | Map < string , PatternFlyMcpResourceFilteredMetadata > ,
150- signal ?: AbortSignal
152+ { signal, signalError } : { signal ?: AbortSignal , signalError ?: Error | DOMException } = { }
151153) : Promise < FilterPatternFlyResults > => {
152154 const getResources = await ( mcpResources || getPatternFlyMcpResources . memo ( ) ) ;
153155 const resources = ( getResources as PatternFlyMcpAvailableResources ) ?. resources ||
@@ -177,6 +179,10 @@ const filterPatternFly = async (
177179 } ;
178180
179181 for ( const [ name , resource ] of resources ) {
182+ if ( signal ?. aborted && signalError ) {
183+ throw signalError ;
184+ }
185+
180186 if ( signal ?. aborted ) {
181187 break ;
182188 }
@@ -305,10 +311,12 @@ const dynamicFilterPatternFly = async (
305311 ) ;
306312
307313 try {
314+ const settings = { signal, signalError : new DOMException ( 'Filter operation aborted' , 'AbortError' ) } ;
315+
308316 return await Promise . any ( [
309317 ...filtersToTry . map ( filter =>
310- passFail ( filterPatternFly . memo ( { ...filters , [ filter ] : searchQuery } , mcpResources , signal ) ) ) ,
311- passFail ( filterPatternFly . memo ( filters , mcpResources , signal ) )
318+ passFail ( filterPatternFly . memo ( { ...filters , [ filter ] : searchQuery } , mcpResources , settings ) ) ) ,
319+ passFail ( filterPatternFly . memo ( filters , mcpResources , settings ) )
312320 ] ) ;
313321 } catch {
314322 // Technically, this should never get to this point since we're passing the original filters as
0 commit comments