diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c
index d04d91e..397cb08 100644
--- a/src/http/ngx_http_upstream.c
+++ b/src/http/ngx_http_upstream.c
@@ -4378,6 +4378,9 @@ ngx_http_upstream_next(ngx_http_request_t *r, ngx_http_upstream_t *u,
     if (u->peer.cached && ft_type == NGX_HTTP_UPSTREAM_FT_ERROR) {
         /* TODO: inform balancer instead */
         u->peer.tries++;
+        if (u->peer.notify) {
+            u->peer.notify(&u->peer, u->peer.data, NGX_HTTP_UPSTREAM_NOTIFY_CACHED_CONNECTION_ERROR);
+        }
     }
 
     switch (ft_type) {
diff --git a/src/http/ngx_http_upstream.h b/src/http/ngx_http_upstream.h
index f6621af..2b5957e 100644
--- a/src/http/ngx_http_upstream.h
+++ b/src/http/ngx_http_upstream.h
@@ -55,6 +55,8 @@
 #define NGX_HTTP_UPSTREAM_IGN_XA_CHARSET     0x00000100
 #define NGX_HTTP_UPSTREAM_IGN_VARY           0x00000200
 
+#define NGX_HTTP_UPSTREAM_NOTIFY_CACHED_CONNECTION_ERROR 0x1
+
 
 typedef struct {
     ngx_uint_t                       status;