@@ -46,7 +46,7 @@ public static async Task<byte[]> GetResponseBytesAsync(this Task<HttpResponseMes
4646 public static async Task < HttpResponseMessage > OnFailure ( this Task < HttpResponseMessage > taskResponseMessage , Action < HttpResponseMessage > action , bool suppressException = true )
4747 {
4848 var response = await taskResponseMessage ;
49- if ( ! response . IsSuccessStatusCode )
49+ if ( ! response . IsSuccessStatusCode && ! response . HttpResponseMessageExceptionOccurred ( ) )
5050 {
5151 action ( response ) ;
5252 if ( ! suppressException ) response . EnsureSuccessStatusCode ( ) ;
@@ -58,7 +58,7 @@ public static async Task<HttpResponseMessage> OnFailure(this Task<HttpResponseMe
5858 public static async Task < HttpResponseMessage > OnFailureAsync ( this Task < HttpResponseMessage > taskResponseMessage , Func < HttpResponseMessage , Task > action , bool suppressException = true )
5959 {
6060 var response = await taskResponseMessage ;
61- if ( ! response . IsSuccessStatusCode )
61+ if ( ! response . IsSuccessStatusCode && ! response . HttpResponseMessageExceptionOccurred ( ) )
6262 {
6363 await action ( response ) ;
6464 if ( ! suppressException ) response . EnsureSuccessStatusCode ( ) ;
@@ -80,4 +80,14 @@ public static async Task<HttpResponseMessage> OnSuccessAsync(this Task<HttpRespo
8080 if ( response . IsSuccessStatusCode ) await action ( response ) ;
8181 return await Task . FromResult ( response ) ;
8282 }
83+
84+ /// <summary>
85+ /// Returns true if an HttpResponseMessageException occurred while sending the request
86+ /// </summary>
87+ /// <param name="message"></param>
88+ /// <returns></returns>
89+ public static bool HttpResponseMessageExceptionOccurred ( this HttpResponseMessage message )
90+ {
91+ return message is NullHttpResponseMessage ;
92+ }
8393}
0 commit comments