diff --git a/alpine/Makefile.module-njs b/alpine/Makefile.module-njs
index 2ae0c01..466f67d 100644
--- a/alpine/Makefile.module-njs
+++ b/alpine/Makefile.module-njs
@@ -11,7 +11,6 @@
 
 MODULE_VERSION_PREFIX_njs=$(MODULE_TARGET_PREFIX)
 MODULE_BUILD_DEPENDS_njs=libedit-dev
-MODULE_PATCHES_njs=extra-patch-1568-fix-subrequest-error-page
 
 define MODULE_ADD_CONTROL_TAGS_njs
 replaces="nginx-mod-http-js"
diff --git a/alpine/src/extra-patch-1568-fix-subrequest-error-page b/alpine/src/extra-patch-1568-fix-subrequest-error-page
deleted file mode 100644
index a56bdf1..0000000
--- a/alpine/src/extra-patch-1568-fix-subrequest-error-page
+++ /dev/null
@@ -1,151 +0,0 @@
-# HG changeset patch
-# User Dmitry Volyntsev <xeioex@nginx.com>
-# Date 1605722951 0
-#      Wed Nov 18 18:09:11 2020 +0000
-# Node ID c947a300b96c87c1d77cbb1a1fbc149ea8c6a1d0
-# Parent  e97f76121196bda29a450388f82458f575665d88
-HTTP: fixed promise subrequest() with error_page redirect.
-
-Previously, promise callbacks for a subrequest were stored in a
-subrequest context.  This is incorrect because a subrequest content may
-be destroyed (for example when error_page with redirect is enabled for a
-subrequest location).
-
-The fix is to store callbacks in the parent context.
-
-The issue was introduced in 6fccbc9f1288 (0.3.8).
-
-diff -r e97f76121196 -r c947a300b96c nginx/ngx_http_js_module.c
---- a/njs-0.4.4/nginx/ngx_http_js_module.c	Tue Nov 17 13:22:34 2020 +0000
-+++ b/njs-0.4.4/nginx/ngx_http_js_module.c	Wed Nov 18 18:09:11 2020 +0000
-@@ -44,12 +44,18 @@ typedef struct {
-     njs_opaque_value_t     request;
-     njs_opaque_value_t     request_body;
-     ngx_str_t              redirect_uri;
--    njs_opaque_value_t     promise_callbacks[2];
-+    ngx_array_t            promise_callbacks;
- } ngx_http_js_ctx_t;
- 
- 
- typedef struct {
-     ngx_http_request_t    *request;
-+    njs_opaque_value_t     callbacks[2];
-+} ngx_http_js_cb_t;
-+
-+
-+typedef struct {
-+    ngx_http_request_t    *request;
-     njs_vm_event_t         vm_event;
-     void                  *unused;
-     ngx_int_t              ident;
-@@ -2276,19 +2282,52 @@ static njs_int_t
- ngx_http_js_promise_trampoline(njs_vm_t *vm, njs_value_t *args,
-     njs_uint_t nargs, njs_index_t unused)
- {
-+    ngx_uint_t           i;
-     njs_function_t      *callback;
-+    ngx_http_js_cb_t    *cb, *cbs;
-     ngx_http_js_ctx_t   *ctx;
-     ngx_http_request_t  *r;
- 
-     r = njs_vm_external(vm, njs_argument(args, 1));
--    ctx = ngx_http_get_module_ctx(r, ngx_http_js_module);
-+    ctx = ngx_http_get_module_ctx(r->parent, ngx_http_js_module);
- 
-     ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
--                   "js subrequest promise trampoline ctx: %p", ctx);
--
--    callback = njs_value_function(njs_value_arg(&ctx->promise_callbacks[0]));
-+                   "js subrequest promise trampoline parent ctx: %p", ctx);
-+
-+    if (ctx == NULL) {
-+        njs_vm_error(vm, "js subrequest: failed to get the parent context");
-+        return NJS_ERROR;
-+    }
-+
-+    cbs = ctx->promise_callbacks.elts;
-+
-+    if (cbs == NULL) {
-+        goto fail;
-+    }
-+
-+    cb = NULL;
-+
-+    for (i = 0; i < ctx->promise_callbacks.nelts; i++) {
-+        if (cbs[i].request == r) {
-+            cb = &cbs[i];
-+            cb->request = NULL;
-+            break;
-+        }
-+    }
-+
-+    if (cb == NULL) {
-+        goto fail;
-+    }
-+
-+    callback = njs_value_function(njs_value_arg(&cb->callbacks[0]));
- 
-     return njs_vm_call(vm, callback, njs_argument(args, 1), 1);
-+
-+fail:
-+
-+    njs_vm_error(vm, "js subrequest: promise callback not found");
-+
-+    return NJS_ERROR;
- }
- 
- 
-@@ -2298,9 +2337,10 @@ ngx_http_js_ext_subrequest(njs_vm_t *vm,
- {
-     ngx_int_t                 rc, promise;
-     njs_str_t                 uri_arg, args_arg, method_name, body_arg;
--    ngx_uint_t                method, methods_max, has_body, detached;
-+    ngx_uint_t                i, method, methods_max, has_body, detached;
-     njs_value_t              *value, *arg, *options;
-     njs_function_t           *callback;
-+    ngx_http_js_cb_t         *cb, *cbs;
-     ngx_http_js_ctx_t        *ctx;
-     njs_opaque_value_t        lvalue;
-     ngx_http_request_t       *r, *sr;
-@@ -2507,15 +2547,36 @@ ngx_http_js_ext_subrequest(njs_vm_t *vm,
-     }
- 
-     if (promise) {
--        ctx = ngx_pcalloc(sr->pool, sizeof(ngx_http_js_ctx_t));
--        if (ctx == NULL) {
--            return NGX_ERROR;
-+        cbs = ctx->promise_callbacks.elts;
-+
-+        if (cbs == NULL) {
-+            if (ngx_array_init(&ctx->promise_callbacks, r->pool, 4,
-+                               sizeof(ngx_http_js_cb_t)) != NGX_OK)
-+            {
-+                goto memory_error;
-+            }
-         }
- 
--        ngx_http_set_ctx(sr, ctx, ngx_http_js_module);
-+        cb = NULL;
-+
-+        for (i = 0; i < ctx->promise_callbacks.nelts; i++) {
-+            if (cbs[i].request == NULL) {
-+                cb = &cbs[i];
-+                break;
-+            }
-+        }
-+
-+        if (i == ctx->promise_callbacks.nelts) {
-+            cb = ngx_array_push(&ctx->promise_callbacks);
-+            if (cb == NULL) {
-+                goto memory_error;
-+            }
-+        }
-+
-+        cb->request = sr;
- 
-         return njs_vm_promise_create(vm, njs_vm_retval(vm),
--                                     njs_value_arg(&ctx->promise_callbacks));
-+                                     njs_value_arg(&cb->callbacks));
-     }
- 
-     njs_value_undefined_set(njs_vm_retval(vm));
diff --git a/debian/Makefile.module-njs b/debian/Makefile.module-njs
index 492e394..b477557 100644
--- a/debian/Makefile.module-njs
+++ b/debian/Makefile.module-njs
@@ -5,7 +5,6 @@
 MODULE_VERSION_njs=	0.4.4
 MODULE_RELEASE_njs=	1
 
-MODULE_PATCHES_njs=	1568-fix-subrequest-error-page.patch
 MODULE_SOURCES_njs=	njs-$(MODULE_VERSION_njs).tar.gz
 
 MODULE_CONFARGS_njs=	--add-dynamic-module=$(MODSRC_PREFIX)njs-$(MODULE_VERSION_njs)/nginx
diff --git a/debian/extra/1568-fix-subrequest-error-page.patch b/debian/extra/1568-fix-subrequest-error-page.patch
deleted file mode 100644
index b756910..0000000
--- a/debian/extra/1568-fix-subrequest-error-page.patch
+++ /dev/null
@@ -1,151 +0,0 @@
-# HG changeset patch
-# User Dmitry Volyntsev <xeioex@nginx.com>
-# Date 1605722951 0
-#      Wed Nov 18 18:09:11 2020 +0000
-# Node ID c947a300b96c87c1d77cbb1a1fbc149ea8c6a1d0
-# Parent  e97f76121196bda29a450388f82458f575665d88
-HTTP: fixed promise subrequest() with error_page redirect.
-
-Previously, promise callbacks for a subrequest were stored in a
-subrequest context.  This is incorrect because a subrequest content may
-be destroyed (for example when error_page with redirect is enabled for a
-subrequest location).
-
-The fix is to store callbacks in the parent context.
-
-The issue was introduced in 6fccbc9f1288 (0.3.8).
-
-diff -r e97f76121196 -r c947a300b96c nginx/ngx_http_js_module.c
---- c/njs-0.4.4/nginx/ngx_http_js_module.c	Tue Nov 17 13:22:34 2020 +0000
-+++ d/njs-0.4.4/nginx/ngx_http_js_module.c	Wed Nov 18 18:09:11 2020 +0000
-@@ -44,12 +44,18 @@ typedef struct {
-     njs_opaque_value_t     request;
-     njs_opaque_value_t     request_body;
-     ngx_str_t              redirect_uri;
--    njs_opaque_value_t     promise_callbacks[2];
-+    ngx_array_t            promise_callbacks;
- } ngx_http_js_ctx_t;
- 
- 
- typedef struct {
-     ngx_http_request_t    *request;
-+    njs_opaque_value_t     callbacks[2];
-+} ngx_http_js_cb_t;
-+
-+
-+typedef struct {
-+    ngx_http_request_t    *request;
-     njs_vm_event_t         vm_event;
-     void                  *unused;
-     ngx_int_t              ident;
-@@ -2276,19 +2282,52 @@ static njs_int_t
- ngx_http_js_promise_trampoline(njs_vm_t *vm, njs_value_t *args,
-     njs_uint_t nargs, njs_index_t unused)
- {
-+    ngx_uint_t           i;
-     njs_function_t      *callback;
-+    ngx_http_js_cb_t    *cb, *cbs;
-     ngx_http_js_ctx_t   *ctx;
-     ngx_http_request_t  *r;
- 
-     r = njs_vm_external(vm, njs_argument(args, 1));
--    ctx = ngx_http_get_module_ctx(r, ngx_http_js_module);
-+    ctx = ngx_http_get_module_ctx(r->parent, ngx_http_js_module);
- 
-     ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
--                   "js subrequest promise trampoline ctx: %p", ctx);
--
--    callback = njs_value_function(njs_value_arg(&ctx->promise_callbacks[0]));
-+                   "js subrequest promise trampoline parent ctx: %p", ctx);
-+
-+    if (ctx == NULL) {
-+        njs_vm_error(vm, "js subrequest: failed to get the parent context");
-+        return NJS_ERROR;
-+    }
-+
-+    cbs = ctx->promise_callbacks.elts;
-+
-+    if (cbs == NULL) {
-+        goto fail;
-+    }
-+
-+    cb = NULL;
-+
-+    for (i = 0; i < ctx->promise_callbacks.nelts; i++) {
-+        if (cbs[i].request == r) {
-+            cb = &cbs[i];
-+            cb->request = NULL;
-+            break;
-+        }
-+    }
-+
-+    if (cb == NULL) {
-+        goto fail;
-+    }
-+
-+    callback = njs_value_function(njs_value_arg(&cb->callbacks[0]));
- 
-     return njs_vm_call(vm, callback, njs_argument(args, 1), 1);
-+
-+fail:
-+
-+    njs_vm_error(vm, "js subrequest: promise callback not found");
-+
-+    return NJS_ERROR;
- }
- 
- 
-@@ -2298,9 +2337,10 @@ ngx_http_js_ext_subrequest(njs_vm_t *vm,
- {
-     ngx_int_t                 rc, promise;
-     njs_str_t                 uri_arg, args_arg, method_name, body_arg;
--    ngx_uint_t                method, methods_max, has_body, detached;
-+    ngx_uint_t                i, method, methods_max, has_body, detached;
-     njs_value_t              *value, *arg, *options;
-     njs_function_t           *callback;
-+    ngx_http_js_cb_t         *cb, *cbs;
-     ngx_http_js_ctx_t        *ctx;
-     njs_opaque_value_t        lvalue;
-     ngx_http_request_t       *r, *sr;
-@@ -2507,15 +2547,36 @@ ngx_http_js_ext_subrequest(njs_vm_t *vm,
-     }
- 
-     if (promise) {
--        ctx = ngx_pcalloc(sr->pool, sizeof(ngx_http_js_ctx_t));
--        if (ctx == NULL) {
--            return NGX_ERROR;
-+        cbs = ctx->promise_callbacks.elts;
-+
-+        if (cbs == NULL) {
-+            if (ngx_array_init(&ctx->promise_callbacks, r->pool, 4,
-+                               sizeof(ngx_http_js_cb_t)) != NGX_OK)
-+            {
-+                goto memory_error;
-+            }
-         }
- 
--        ngx_http_set_ctx(sr, ctx, ngx_http_js_module);
-+        cb = NULL;
-+
-+        for (i = 0; i < ctx->promise_callbacks.nelts; i++) {
-+            if (cbs[i].request == NULL) {
-+                cb = &cbs[i];
-+                break;
-+            }
-+        }
-+
-+        if (i == ctx->promise_callbacks.nelts) {
-+            cb = ngx_array_push(&ctx->promise_callbacks);
-+            if (cb == NULL) {
-+                goto memory_error;
-+            }
-+        }
-+
-+        cb->request = sr;
- 
-         return njs_vm_promise_create(vm, njs_vm_retval(vm),
--                                     njs_value_arg(&ctx->promise_callbacks));
-+                                     njs_value_arg(&cb->callbacks));
-     }
- 
-     njs_value_undefined_set(njs_vm_retval(vm));
diff --git a/rpm/SOURCES/1568-fix-subrequest-error-page.patch b/rpm/SOURCES/1568-fix-subrequest-error-page.patch
deleted file mode 100644
index a56bdf1..0000000
--- a/rpm/SOURCES/1568-fix-subrequest-error-page.patch
+++ /dev/null
@@ -1,151 +0,0 @@
-# HG changeset patch
-# User Dmitry Volyntsev <xeioex@nginx.com>
-# Date 1605722951 0
-#      Wed Nov 18 18:09:11 2020 +0000
-# Node ID c947a300b96c87c1d77cbb1a1fbc149ea8c6a1d0
-# Parent  e97f76121196bda29a450388f82458f575665d88
-HTTP: fixed promise subrequest() with error_page redirect.
-
-Previously, promise callbacks for a subrequest were stored in a
-subrequest context.  This is incorrect because a subrequest content may
-be destroyed (for example when error_page with redirect is enabled for a
-subrequest location).
-
-The fix is to store callbacks in the parent context.
-
-The issue was introduced in 6fccbc9f1288 (0.3.8).
-
-diff -r e97f76121196 -r c947a300b96c nginx/ngx_http_js_module.c
---- a/njs-0.4.4/nginx/ngx_http_js_module.c	Tue Nov 17 13:22:34 2020 +0000
-+++ b/njs-0.4.4/nginx/ngx_http_js_module.c	Wed Nov 18 18:09:11 2020 +0000
-@@ -44,12 +44,18 @@ typedef struct {
-     njs_opaque_value_t     request;
-     njs_opaque_value_t     request_body;
-     ngx_str_t              redirect_uri;
--    njs_opaque_value_t     promise_callbacks[2];
-+    ngx_array_t            promise_callbacks;
- } ngx_http_js_ctx_t;
- 
- 
- typedef struct {
-     ngx_http_request_t    *request;
-+    njs_opaque_value_t     callbacks[2];
-+} ngx_http_js_cb_t;
-+
-+
-+typedef struct {
-+    ngx_http_request_t    *request;
-     njs_vm_event_t         vm_event;
-     void                  *unused;
-     ngx_int_t              ident;
-@@ -2276,19 +2282,52 @@ static njs_int_t
- ngx_http_js_promise_trampoline(njs_vm_t *vm, njs_value_t *args,
-     njs_uint_t nargs, njs_index_t unused)
- {
-+    ngx_uint_t           i;
-     njs_function_t      *callback;
-+    ngx_http_js_cb_t    *cb, *cbs;
-     ngx_http_js_ctx_t   *ctx;
-     ngx_http_request_t  *r;
- 
-     r = njs_vm_external(vm, njs_argument(args, 1));
--    ctx = ngx_http_get_module_ctx(r, ngx_http_js_module);
-+    ctx = ngx_http_get_module_ctx(r->parent, ngx_http_js_module);
- 
-     ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
--                   "js subrequest promise trampoline ctx: %p", ctx);
--
--    callback = njs_value_function(njs_value_arg(&ctx->promise_callbacks[0]));
-+                   "js subrequest promise trampoline parent ctx: %p", ctx);
-+
-+    if (ctx == NULL) {
-+        njs_vm_error(vm, "js subrequest: failed to get the parent context");
-+        return NJS_ERROR;
-+    }
-+
-+    cbs = ctx->promise_callbacks.elts;
-+
-+    if (cbs == NULL) {
-+        goto fail;
-+    }
-+
-+    cb = NULL;
-+
-+    for (i = 0; i < ctx->promise_callbacks.nelts; i++) {
-+        if (cbs[i].request == r) {
-+            cb = &cbs[i];
-+            cb->request = NULL;
-+            break;
-+        }
-+    }
-+
-+    if (cb == NULL) {
-+        goto fail;
-+    }
-+
-+    callback = njs_value_function(njs_value_arg(&cb->callbacks[0]));
- 
-     return njs_vm_call(vm, callback, njs_argument(args, 1), 1);
-+
-+fail:
-+
-+    njs_vm_error(vm, "js subrequest: promise callback not found");
-+
-+    return NJS_ERROR;
- }
- 
- 
-@@ -2298,9 +2337,10 @@ ngx_http_js_ext_subrequest(njs_vm_t *vm,
- {
-     ngx_int_t                 rc, promise;
-     njs_str_t                 uri_arg, args_arg, method_name, body_arg;
--    ngx_uint_t                method, methods_max, has_body, detached;
-+    ngx_uint_t                i, method, methods_max, has_body, detached;
-     njs_value_t              *value, *arg, *options;
-     njs_function_t           *callback;
-+    ngx_http_js_cb_t         *cb, *cbs;
-     ngx_http_js_ctx_t        *ctx;
-     njs_opaque_value_t        lvalue;
-     ngx_http_request_t       *r, *sr;
-@@ -2507,15 +2547,36 @@ ngx_http_js_ext_subrequest(njs_vm_t *vm,
-     }
- 
-     if (promise) {
--        ctx = ngx_pcalloc(sr->pool, sizeof(ngx_http_js_ctx_t));
--        if (ctx == NULL) {
--            return NGX_ERROR;
-+        cbs = ctx->promise_callbacks.elts;
-+
-+        if (cbs == NULL) {
-+            if (ngx_array_init(&ctx->promise_callbacks, r->pool, 4,
-+                               sizeof(ngx_http_js_cb_t)) != NGX_OK)
-+            {
-+                goto memory_error;
-+            }
-         }
- 
--        ngx_http_set_ctx(sr, ctx, ngx_http_js_module);
-+        cb = NULL;
-+
-+        for (i = 0; i < ctx->promise_callbacks.nelts; i++) {
-+            if (cbs[i].request == NULL) {
-+                cb = &cbs[i];
-+                break;
-+            }
-+        }
-+
-+        if (i == ctx->promise_callbacks.nelts) {
-+            cb = ngx_array_push(&ctx->promise_callbacks);
-+            if (cb == NULL) {
-+                goto memory_error;
-+            }
-+        }
-+
-+        cb->request = sr;
- 
-         return njs_vm_promise_create(vm, njs_vm_retval(vm),
--                                     njs_value_arg(&ctx->promise_callbacks));
-+                                     njs_value_arg(&cb->callbacks));
-     }
- 
-     njs_value_undefined_set(njs_vm_retval(vm));
diff --git a/rpm/SPECS/Makefile.module-njs b/rpm/SPECS/Makefile.module-njs
index 47731ec..d80c047 100644
--- a/rpm/SPECS/Makefile.module-njs
+++ b/rpm/SPECS/Makefile.module-njs
@@ -7,7 +7,6 @@
 
 MODULE_VERSION_PREFIX_njs=$(MODULE_TARGET_PREFIX)
 
-MODULE_PATCHES_njs=1568-fix-subrequest-error-page.patch
 MODULE_SOURCES_njs=	njs-$(MODULE_VERSION_njs).tar.gz
 
 MODULE_CONFARGS_njs=	--add-dynamic-module=njs-$(MODULE_VERSION_njs)/nginx
