diff --git a/src/libraries/System.Net.Http/tests/StressTests/HttpStress/ClientOperations.cs b/src/libraries/System.Net.Http/tests/StressTests/HttpStress/ClientOperations.cs index 5708e48277eb90..f856652adb71fb 100644 --- a/src/libraries/System.Net.Http/tests/StressTests/HttpStress/ClientOperations.cs +++ b/src/libraries/System.Net.Http/tests/StressTests/HttpStress/ClientOperations.cs @@ -318,6 +318,32 @@ public static (string name, Func operation)[] Operations = } } + if (ctx.HttpVersion == HttpVersion.Version30) + { + // HTTP/3 exception nesting: + // HttpRequestException->IOException->HttpRequestException->QuicStreamAbortedException + // HttpRequestException->QuicStreamAbortedException + + if (e is IOException && e.InnerException is HttpRequestException) + { + e = e.InnerException; + } + + if (e is HttpRequestException) + { + string? name = e.InnerException?.GetType().Name; + switch (name) + { + case "QuicStreamAbortedException": + if (e.InnerException?.Message?.Equals("Stream aborted by peer (258).") ?? false) // 258 = H3_INTERNAL_ERROR (0x102) + { + return; + } + break; + } + } + } + throw; } }),