Repository: ngyn-rs/ngyn (language: rust)

Issue:
Remove use of `async_trait`
should be done with #199 


Discussion / hints:

Fix patch:
diff --git a/Cargo.lock b/Cargo.lock
index b0d8771..f056595 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -320,7 +320,7 @@ checksum = "7319a086b79c3ff026a33a61e80f04fd3885fbb73237981ea080d21944e1cb1c"
 dependencies = [
  "base64 0.22.1",
  "bytes",
- "http 1.1.0",
+ "http 1.2.0",
  "http-body 1.0.0",
  "http-serde",
  "query_map",
@@ -471,9 +471,9 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
 
 [[package]]
 name = "bytes"
-version = "1.7.1"
+version = "1.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50"
+checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b"
 dependencies = [
  "serde",
 ]
@@ -1055,7 +1055,7 @@ dependencies = [
  "fnv",
  "futures-core",
  "futures-sink",
- "http 1.1.0",
+ "http 1.2.0",
  "indexmap 2.2.6",
  "slab",
  "tokio",
@@ -1121,9 +1121,9 @@ dependencies = [
 
 [[package]]
 name = "http"
-version = "1.1.0"
+version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258"
+checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea"
 dependencies = [
  "bytes",
  "fnv",
@@ -1148,7 +1148,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643"
 dependencies = [
  "bytes",
- "http 1.1.0",
+ "http 1.2.0",
 ]
 
 [[package]]
@@ -1159,7 +1159,7 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f"
 dependencies = [
  "bytes",
  "futures-util",
- "http 1.1.0",
+ "http 1.2.0",
  "http-body 1.0.0",
  "pin-project-lite",
 ]
@@ -1170,7 +1170,7 @@ version = "2.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0f056c8559e3757392c8d091e796416e4649d8e49e88b8d76df6c002f05027fd"
 dependencies = [
- "http 1.1.0",
+ "http 1.2.0",
  "serde",
 ]
 
@@ -1220,7 +1220,7 @@ dependencies = [
  "futures-channel",
  "futures-util",
  "h2 0.4.5",
- "http 1.1.0",
+ "http 1.2.0",
  "http-body 1.0.0",
  "httparse",
  "httpdate",
@@ -1252,7 +1252,7 @@ dependencies = [
  "bytes",
  "futures-channel",
  "futures-util",
- "http 1.1.0",
+ "http 1.2.0",
  "http-body 1.0.0",
  "hyper 1.4.0",
  "pin-project-lite",
@@ -1459,7 +1459,7 @@ dependencies = [
  "encoding_rs",
  "futures",
  "futures-util",
- "http 1.1.0",
+ "http 1.2.0",
  "http-body 1.0.0",
  "http-body-util",
  "hyper 1.4.0",
@@ -1484,7 +1484,7 @@ dependencies = [
  "base64 0.22.1",
  "bytes",
  "futures",
- "http 1.1.0",
+ "http 1.2.0",
  "http-body 1.0.0",
  "http-body-util",
  "http-serde",
@@ -1511,7 +1511,7 @@ dependencies = [
  "bytes",
  "futures-channel",
  "futures-util",
- "http 1.1.0",
+ "http 1.2.0",
  "http-body 1.0.0",
  "http-body-util",
  "hyper 1.4.0",
@@ -1672,7 +1672,7 @@ dependencies = [
  "bytes",
  "encoding_rs",
  "futures-util",
- "http 1.1.0",
+ "http 1.2.0",
  "httparse",
  "memchr",
  "mime",
@@ -1684,9 +1684,7 @@ dependencies = [
 name = "ngyn"
 version = "0.4.5"
 dependencies = [
- "async-std",
- "async-trait",
- "http 1.1.0",
+ "http 1.2.0",
  "ngyn-hyper 0.1.1",
  "ngyn_macros 0.4.5",
  "ngyn_shared 0.4.5",
@@ -1699,7 +1697,7 @@ source = "git+https://github.com/ngyn-rs/ngyn?branch=dev#d4d6fa35746c08cb181b746
 dependencies = [
  "async-std",
  "async-trait",
- "http 1.1.0",
+ "http 1.2.0",
  "ngyn-hyper 0.1.1 (git+https://github.com/ngyn-rs/ngyn?branch=dev)",
  "ngyn_macros 0.4.5 (git+https://github.com/ngyn-rs/ngyn?branch=dev)",
  "ngyn_shared 0.4.5 (git+https://github.com/ngyn-rs/ngyn?branch=dev)",
@@ -1793,7 +1791,7 @@ dependencies = [
 name = "ngyn_macros"
 version = "0.4.5"
 dependencies = [
- "http 1.1.0",
+ "http 1.2.0",
  "macrotest",
  "ngyn_shared 0.4.5",
  "quote",
@@ -1805,7 +1803,7 @@ name = "ngyn_macros"
 version = "0.4.5"
 source = "git+https://github.com/ngyn-rs/ngyn?branch=dev#d4d6fa35746c08cb181b7468e28224ffa967cb20"
 dependencies = [
- "http 1.1.0",
+ "http 1.2.0",
  "ngyn_shared 0.4.5 (git+https://github.com/ngyn-rs/ngyn?branch=dev)",
  "quote",
  "syn 2.0.77",
@@ -1831,10 +1829,9 @@ dependencies = [
 name = "ngyn_shared"
 version = "0.4.5"
 dependencies = [
- "async-trait",
  "bytes",
  "futures-util",
- "http 1.1.0",
+ "http 1.2.0",
  "http-body-util",
  "multer",
  "regex",
@@ -1851,7 +1848,7 @@ source = "git+https://github.com/ngyn-rs/ngyn?branch=dev#d4d6fa35746c08cb181b746
 dependencies = [
  "async-trait",
  "bytes",
- "http 1.1.0",
+ "http 1.2.0",
  "http-body-util",
  "regex",
  "serde",
@@ -2921,7 +2918,7 @@ checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5"
 dependencies = [
  "bitflags 2.6.0",
  "bytes",
- "http 1.1.0",
+ "http 1.2.0",
  "http-body 1.0.0",
  "http-body-util",
  "pin-project-lite",
diff --git a/Cargo.toml b/Cargo.toml
index 0c72bf2..8229695 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -3,10 +3,8 @@ members = ["crates/*", "examples/*", "starter-templates/*"]
 resolver = "2"
 
 [workspace.dependencies]
-async-std = { version = "1.6", features = ["attributes"] }
-async-trait = "0.1"
-bytes = "1.2"
-http = "1"
+bytes = "1.9"
+http = "1.2"
 http-body-util = "0.1"
 serde = { version = "1.0", features = ["derive"] }
 serde_json = "1.0"
diff --git a/crates/Cargo.lock b/crates/Cargo.lock
index 0bedd55..0b27fab 100644
--- a/crates/Cargo.lock
+++ b/crates/Cargo.lock
@@ -102,153 +102,6 @@ version = "0.7.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
 
-[[package]]
-name = "async-attributes"
-version = "1.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5"
-dependencies = [
- "quote",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "async-channel"
-version = "1.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35"
-dependencies = [
- "concurrent-queue",
- "event-listener 2.5.3",
- "futures-core",
-]
-
-[[package]]
-name = "async-channel"
-version = "2.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a"
-dependencies = [
- "concurrent-queue",
- "event-listener-strategy",
- "futures-core",
- "pin-project-lite",
-]
-
-[[package]]
-name = "async-executor"
-version = "1.13.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d7ebdfa2ebdab6b1760375fa7d6f382b9f486eac35fc994625a00e89280bdbb7"
-dependencies = [
- "async-task",
- "concurrent-queue",
- "fastrand 2.1.1",
- "futures-lite 2.3.0",
- "slab",
-]
-
-[[package]]
-name = "async-global-executor"
-version = "2.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c"
-dependencies = [
- "async-channel 2.3.1",
- "async-executor",
- "async-io 2.3.4",
- "async-lock 3.4.0",
- "blocking",
- "futures-lite 2.3.0",
- "once_cell",
-]
-
-[[package]]
-name = "async-io"
-version = "1.13.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af"
-dependencies = [
- "async-lock 2.8.0",
- "autocfg",
- "cfg-if",
- "concurrent-queue",
- "futures-lite 1.13.0",
- "log",
- "parking",
- "polling 2.8.0",
- "rustix 0.37.27",
- "slab",
- "socket2 0.4.10",
- "waker-fn",
-]
-
-[[package]]
-name = "async-io"
-version = "2.3.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8"
-dependencies = [
- "async-lock 3.4.0",
- "cfg-if",
- "concurrent-queue",
- "futures-io",
- "futures-lite 2.3.0",
- "parking",
- "polling 3.7.3",
- "rustix 0.38.34",
- "slab",
- "tracing",
- "windows-sys 0.59.0",
-]
-
-[[package]]
-name = "async-lock"
-version = "2.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b"
-dependencies = [
- "event-listener 2.5.3",
-]
-
-[[package]]
-name = "async-lock"
-version = "3.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18"
-dependencies = [
- "event-listener 5.3.1",
- "event-listener-strategy",
- "pin-project-lite",
-]
-
-[[package]]
-name = "async-std"
-version = "1.12.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d"
-dependencies = [
- "async-attributes",
- "async-channel 1.9.0",
- "async-global-executor",
- "async-io 1.13.0",
- "async-lock 2.8.0",
- "crossbeam-utils",
- "futures-channel",
- "futures-core",
- "futures-io",
- "futures-lite 1.13.0",
- "gloo-timers",
- "kv-log-macro",
- "log",
- "memchr",
- "once_cell",
- "pin-project-lite",
- "pin-utils",
- "slab",
- "wasm-bindgen-futures",
-]
-
 [[package]]
 name = "async-stream"
 version = "0.3.5"
@@ -271,12 +124,6 @@ dependencies = [
  "syn 2.0.76",
 ]
 
-[[package]]
-name = "async-task"
-version = "4.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de"
-
 [[package]]
 name = "async-trait"
 version = "0.1.81"
@@ -308,7 +155,7 @@ checksum = "7319a086b79c3ff026a33a61e80f04fd3885fbb73237981ea080d21944e1cb1c"
 dependencies = [
  "base64 0.22.1",
  "bytes",
- "http 1.1.0",
+ "http 1.2.0",
  "http-body 1.0.1",
  "http-serde",
  "query_map",
@@ -428,19 +275,6 @@ version = "2.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
 
-[[package]]
-name = "blocking"
-version = "1.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea"
-dependencies = [
- "async-channel 2.3.1",
- "async-task",
- "futures-io",
- "futures-lite 2.3.0",
- "piper",
-]
-
 [[package]]
 name = "bumpalo"
 version = "3.16.0"
@@ -455,9 +289,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
 
 [[package]]
 name = "bytes"
-version = "1.7.1"
+version = "1.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50"
+checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b"
 dependencies = [
  "serde",
 ]
@@ -564,15 +398,6 @@ dependencies = [
  "unicode-width",
 ]
 
-[[package]]
-name = "concurrent-queue"
-version = "2.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"
-dependencies = [
- "crossbeam-utils",
-]
-
 [[package]]
 name = "console"
 version = "0.15.8"
@@ -712,48 +537,12 @@ dependencies = [
  "windows-sys 0.52.0",
 ]
 
-[[package]]
-name = "event-listener"
-version = "2.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
-
-[[package]]
-name = "event-listener"
-version = "5.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba"
-dependencies = [
- "concurrent-queue",
- "parking",
- "pin-project-lite",
-]
-
-[[package]]
-name = "event-listener-strategy"
-version = "0.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1"
-dependencies = [
- "event-listener 5.3.1",
- "pin-project-lite",
-]
-
 [[package]]
 name = "exitcode"
 version = "1.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "de853764b47027c2e862a995c34978ffa63c1501f2e15f987ba11bd4f9bba193"
 
-[[package]]
-name = "fastrand"
-version = "1.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
-dependencies = [
- "instant",
-]
-
 [[package]]
 name = "fastrand"
 version = "2.1.1"
@@ -823,34 +612,6 @@ version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
 
-[[package]]
-name = "futures-lite"
-version = "1.13.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce"
-dependencies = [
- "fastrand 1.9.0",
- "futures-core",
- "futures-io",
- "memchr",
- "parking",
- "pin-project-lite",
- "waker-fn",
-]
-
-[[package]]
-name = "futures-lite"
-version = "2.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5"
-dependencies = [
- "fastrand 2.1.1",
- "futures-core",
- "futures-io",
- "parking",
- "pin-project-lite",
-]
-
 [[package]]
 name = "futures-macro"
 version = "0.3.30"
@@ -915,18 +676,6 @@ version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
 
-[[package]]
-name = "gloo-timers"
-version = "0.2.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c"
-dependencies = [
- "futures-channel",
- "futures-core",
- "js-sys",
- "wasm-bindgen",
-]
-
 [[package]]
 name = "h2"
 version = "0.3.26"
@@ -957,7 +706,7 @@ dependencies = [
  "fnv",
  "futures-core",
  "futures-sink",
- "http 1.1.0",
+ "http 1.2.0",
  "indexmap 2.4.0",
  "slab",
  "tokio",
@@ -1004,12 +753,6 @@ version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
 
-[[package]]
-name = "hermit-abi"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc"
-
 [[package]]
 name = "http"
 version = "0.2.12"
@@ -1023,9 +766,9 @@ dependencies = [
 
 [[package]]
 name = "http"
-version = "1.1.0"
+version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258"
+checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea"
 dependencies = [
  "bytes",
  "fnv",
@@ -1050,7 +793,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
 dependencies = [
  "bytes",
- "http 1.1.0",
+ "http 1.2.0",
 ]
 
 [[package]]
@@ -1061,7 +804,7 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f"
 dependencies = [
  "bytes",
  "futures-util",
- "http 1.1.0",
+ "http 1.2.0",
  "http-body 1.0.1",
  "pin-project-lite",
 ]
@@ -1072,7 +815,7 @@ version = "2.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0f056c8559e3757392c8d091e796416e4649d8e49e88b8d76df6c002f05027fd"
 dependencies = [
- "http 1.1.0",
+ "http 1.2.0",
  "serde",
 ]
 
@@ -1105,7 +848,7 @@ dependencies = [
  "httpdate",
  "itoa",
  "pin-project-lite",
- "socket2 0.5.7",
+ "socket2",
  "tokio",
  "tower-service",
  "tracing",
@@ -1122,7 +865,7 @@ dependencies = [
  "futures-channel",
  "futures-util",
  "h2 0.4.6",
- "http 1.1.0",
+ "http 1.2.0",
  "http-body 1.0.1",
  "httparse",
  "httpdate",
@@ -1154,11 +897,11 @@ dependencies = [
  "bytes",
  "futures-channel",
  "futures-util",
- "http 1.1.0",
+ "http 1.2.0",
  "http-body 1.0.1",
  "hyper 1.4.1",
  "pin-project-lite",
- "socket2 0.5.7",
+ "socket2",
  "tokio",
  "tower",
  "tower-service",
@@ -1237,26 +980,6 @@ dependencies = [
  "hashbrown 0.14.5",
 ]
 
-[[package]]
-name = "instant"
-version = "0.1.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222"
-dependencies = [
- "cfg-if",
-]
-
-[[package]]
-name = "io-lifetimes"
-version = "1.0.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
-dependencies = [
- "hermit-abi 0.3.9",
- "libc",
- "windows-sys 0.48.0",
-]
-
 [[package]]
 name = "is_terminal_polyfill"
 version = "1.70.1"
@@ -1287,15 +1010,6 @@ dependencies = [
  "wasm-bindgen",
 ]
 
-[[package]]
-name = "kv-log-macro"
-version = "1.0.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f"
-dependencies = [
- "log",
-]
-
 [[package]]
 name = "lambda_http"
 version = "0.11.4"
@@ -1308,7 +1022,7 @@ dependencies = [
  "encoding_rs",
  "futures",
  "futures-util",
- "http 1.1.0",
+ "http 1.2.0",
  "http-body 1.0.1",
  "http-body-util",
  "hyper 1.4.1",
@@ -1333,7 +1047,7 @@ dependencies = [
  "base64 0.22.1",
  "bytes",
  "futures",
- "http 1.1.0",
+ "http 1.2.0",
  "http-body 1.0.1",
  "http-body-util",
  "http-serde",
@@ -1360,7 +1074,7 @@ dependencies = [
  "bytes",
  "futures-channel",
  "futures-util",
- "http 1.1.0",
+ "http 1.2.0",
  "http-body 1.0.1",
  "http-body-util",
  "hyper 1.4.1",
@@ -1384,12 +1098,6 @@ version = "0.2.158"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439"
 
-[[package]]
-name = "linux-raw-sys"
-version = "0.3.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
-
 [[package]]
 name = "linux-raw-sys"
 version = "0.4.14"
@@ -1411,9 +1119,6 @@ name = "log"
 version = "0.4.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
-dependencies = [
- "value-bag",
-]
 
 [[package]]
 name = "logos"
@@ -1518,19 +1223,34 @@ version = "1.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec"
 dependencies = [
- "hermit-abi 0.3.9",
+ "hermit-abi",
  "libc",
  "wasi",
  "windows-sys 0.52.0",
 ]
 
+[[package]]
+name = "multer"
+version = "3.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "83e87776546dc87511aa5ee218730c92b666d7264ab6ed41f9d215af9cd5224b"
+dependencies = [
+ "bytes",
+ "encoding_rs",
+ "futures-util",
+ "http 1.2.0",
+ "httparse",
+ "memchr",
+ "mime",
+ "spin",
+ "version_check",
+]
+
 [[package]]
 name = "ngyn"
 version = "0.4.5"
 dependencies = [
- "async-std",
- "async-trait",
- "http 1.1.0",
+ "http 1.2.0",
  "ngyn-hyper",
  "ngyn_macros",
  "ngyn_shared",
@@ -1589,7 +1309,7 @@ dependencies = [
 name = "ngyn_macros"
 version = "0.4.5"
 dependencies = [
- "http 1.1.0",
+ "http 1.2.0",
  "macrotest",
  "ngyn_shared",
  "quote",
@@ -1600,10 +1320,11 @@ dependencies = [
 name = "ngyn_shared"
 version = "0.4.5"
 dependencies = [
- "async-trait",
  "bytes",
- "http 1.1.0",
+ "futures-util",
+ "http 1.2.0",
  "http-body-util",
+ "multer",
  "regex",
  "serde",
  "serde_json",
@@ -1708,12 +1429,6 @@ version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
 
-[[package]]
-name = "parking"
-version = "2.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae"
-
 [[package]]
 name = "parking_lot"
 version = "0.12.3"
@@ -1775,48 +1490,6 @@ version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
 
-[[package]]
-name = "piper"
-version = "0.2.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066"
-dependencies = [
- "atomic-waker",
- "fastrand 2.1.1",
- "futures-io",
-]
-
-[[package]]
-name = "polling"
-version = "2.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce"
-dependencies = [
- "autocfg",
- "bitflags 1.3.2",
- "cfg-if",
- "concurrent-queue",
- "libc",
- "log",
- "pin-project-lite",
- "windows-sys 0.48.0",
-]
-
-[[package]]
-name = "polling"
-version = "3.7.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511"
-dependencies = [
- "cfg-if",
- "concurrent-queue",
- "hermit-abi 0.4.0",
- "pin-project-lite",
- "rustix 0.38.34",
- "tracing",
- "windows-sys 0.59.0",
-]
-
 [[package]]
 name = "ppv-lite86"
 version = "0.2.20"
@@ -2056,20 +1729,6 @@ version = "0.1.24"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
 
-[[package]]
-name = "rustix"
-version = "0.37.27"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2"
-dependencies = [
- "bitflags 1.3.2",
- "errno",
- "io-lifetimes",
- "libc",
- "linux-raw-sys 0.3.8",
- "windows-sys 0.48.0",
-]
-
 [[package]]
 name = "rustix"
 version = "0.38.34"
@@ -2079,7 +1738,7 @@ dependencies = [
  "bitflags 2.6.0",
  "errno",
  "libc",
- "linux-raw-sys 0.4.14",
+ "linux-raw-sys",
  "windows-sys 0.52.0",
 ]
 
@@ -2320,16 +1979,6 @@ version = "1.13.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
 
-[[package]]
-name = "socket2"
-version = "0.4.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d"
-dependencies = [
- "libc",
- "winapi",
-]
-
 [[package]]
 name = "socket2"
 version = "0.5.7"
@@ -2340,6 +1989,12 @@ dependencies = [
  "windows-sys 0.52.0",
 ]
 
+[[package]]
+name = "spin"
+version = "0.9.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
+
 [[package]]
 name = "strfmt"
 version = "0.2.4"
@@ -2428,9 +2083,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64"
 dependencies = [
  "cfg-if",
- "fastrand 2.1.1",
+ "fastrand",
  "once_cell",
- "rustix 0.38.34",
+ "rustix",
  "windows-sys 0.59.0",
 ]
 
@@ -2492,7 +2147,7 @@ dependencies = [
  "parking_lot",
  "pin-project-lite",
  "signal-hook-registry",
- "socket2 0.5.7",
+ "socket2",
  "tokio-macros",
  "windows-sys 0.52.0",
 ]
@@ -2597,7 +2252,7 @@ checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5"
 dependencies = [
  "bitflags 2.6.0",
  "bytes",
- "http 1.1.0",
+ "http 1.2.0",
  "http-body 1.0.1",
  "http-body-util",
  "pin-project-lite",
@@ -2821,12 +2476,6 @@ version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
 
-[[package]]
-name = "value-bag"
-version = "1.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a84c137d37ab0142f0f2ddfe332651fdbf252e7b7dbb4e67b6c1f1b2e925101"
-
 [[package]]
 name = "vercel_runtime"
 version = "1.1.4"
@@ -2881,12 +2530,6 @@ version = "0.9.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
 
-[[package]]
-name = "waker-fn"
-version = "1.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7"
-
 [[package]]
 name = "want"
 version = "0.3.1"
@@ -2928,18 +2571,6 @@ dependencies = [
  "wasm-bindgen-shared",
 ]
 
-[[package]]
-name = "wasm-bindgen-futures"
-version = "0.4.43"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed"
-dependencies = [
- "cfg-if",
- "js-sys",
- "wasm-bindgen",
- "web-sys",
-]
-
 [[package]]
 name = "wasm-bindgen-macro"
 version = "0.2.93"
@@ -2969,16 +2600,6 @@ version = "0.2.93"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484"
 
-[[package]]
-name = "web-sys"
-version = "0.3.70"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0"
-dependencies = [
- "js-sys",
- "wasm-bindgen",
-]
-
 [[package]]
 name = "web-time"
 version = "0.2.4"
diff --git a/crates/Cargo.toml b/crates/Cargo.toml
index 77d044d..8b665e0 100644
--- a/crates/Cargo.toml
+++ b/crates/Cargo.toml
@@ -3,10 +3,8 @@ members = ["./*"]
 resolver = "2"
 
 [workspace.dependencies]
-async-std = { version = "1.6", features = ["attributes"] }
-async-trait = "0.1"
-bytes = "1.2"
-http = "1"
+bytes = "1.9"
+http = "1.2"
 http-body-util = "0.1"
 serde = { version = "1.0", features = ["derive"] }
 serde_json = "1.0"
diff --git a/crates/core/Cargo.toml b/crates/core/Cargo.toml
index a474a48..860b718 100644
--- a/crates/core/Cargo.toml
+++ b/crates/core/Cargo.toml
@@ -13,8 +13,6 @@ homepage = "https://ngyn.rs"
 path = "src/lib.rs"
 
 [dependencies]
-async-std = { workspace = true }
-async-trait = { workspace = true }
 http = { workspace = true }
 ngyn_macros = { version = "0.4", path = "../macros" }
 ngyn_shared = { version = "0.4", path = "../shared" }
diff --git a/crates/core/src/lib.rs b/crates/core/src/lib.rs
index 6150ca9..f791e8a 100644
--- a/crates/core/src/lib.rs
+++ b/crates/core/src/lib.rs
@@ -1,8 +1,6 @@
 #![doc = include_str!("../README.md")]
 
 pub mod macros {
-    pub use async_std::main;
-    pub use async_trait::async_trait;
     pub use ngyn_macros::*;
 }
 
diff --git a/crates/macros/Cargo.toml b/crates/macros/Cargo.toml
index dfa969c..41ca409 100644
--- a/crates/macros/Cargo.toml
+++ b/crates/macros/Cargo.toml
@@ -11,7 +11,7 @@ rust-version = "1.75"
 
 [dependencies]
 http = { workspace = true }
-syn = "2.0"
+syn = { version="2.0", features=["full"] }
 quote = "1.0"
 ngyn_shared = { version = "0.4", path = "../shared" }
 
diff --git a/crates/shared/Cargo.toml b/crates/shared/Cargo.toml
index 541a31d..6409790 100644
--- a/crates/shared/Cargo.toml
+++ b/crates/shared/Cargo.toml
@@ -12,7 +12,6 @@ rust-version = "1.75"
 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
 
 [dependencies]
-async-trait = { workspace = true }
 bytes = { workspace = true }
 futures-util = { version = "0.3", default-features = false }
 http-body-util = { workspace = true }
diff --git a/crates/shared/src/core/engine.rs b/crates/shared/src/core/engine.rs
index e8b611f..a9deb21 100644
--- a/crates/shared/src/core/engine.rs
+++ b/crates/shared/src/core/engine.rs
@@ -6,14 +6,13 @@ use std::sync::Arc;
 use super::handler::RouteHandler;
 use crate::{
     server::{context::AppState, Method, NgynContext, NgynResponse},
-    traits::{Middleware, NgynInterpreter, NgynMiddleware},
+    traits::{Middleware, NgynMiddleware},
 };
 
 #[derive(Default)]
 pub struct PlatformData {
     routes: Vec<(String, Option<Method>, Box<RouteHandler>)>,
     middlewares: Vec<Box<dyn crate::traits::Middleware>>,
-    interpreters: Vec<Box<dyn NgynInterpreter>>,
     state: Option<Arc<Box<dyn AppState>>>,
 }
 
@@ -65,11 +64,6 @@ impl PlatformData {
             }
         }
 
-        // trigger interpreters
-        for interpreter in &self.interpreters {
-            interpreter.interpret(cx.response()).await;
-        }
-
         cx.response().clone()
     }
 
@@ -97,15 +91,6 @@ impl PlatformData {
     pub(self) fn add_middleware(&mut self, middleware: Box<dyn Middleware>) {
         self.middlewares.push(middleware);
     }
-
-    /// Adds an interpreter to the platform data.
-    ///
-    /// ### Arguments
-    ///
-    /// * `interpreter` - The interpreter to add.
-    pub(self) fn add_interpreter(&mut self, interpreter: Box<dyn NgynInterpreter>) {
-        self.interpreters.push(interpreter);
-    }
 }
 
 pub trait NgynPlatform: Default {
@@ -182,15 +167,6 @@ pub trait NgynEngine: NgynPlatform {
         self.data_mut().add_middleware(Box::new(middleware));
     }
 
-    /// Adds an interpreter to the application.
-    ///
-    /// ### Arguments
-    ///
-    /// * `interpreter` - The interpreter to add.
-    fn use_interpreter(&mut self, interpreter: impl NgynInterpreter + 'static) {
-        self.data_mut().add_interpreter(Box::new(interpreter));
-    }
-
     /// Sets the state of the application to any value that implements [`AppState`].
     ///
     /// ### Arguments
@@ -226,13 +202,6 @@ mod tests {
         async fn handle(_cx: &mut NgynContext) {}
     }
 
-    struct MockInterpreter;
-
-    #[async_trait::async_trait]
-    impl NgynInterpreter for MockInterpreter {
-        async fn interpret(&self, _res: &mut NgynResponse) {}
-    }
-
     #[derive(Default)]
     struct MockEngine {
         data: PlatformData,
@@ -330,23 +299,6 @@ mod tests {
         assert_eq!(res.status(), http::StatusCode::OK);
     }
 
-    #[tokio::test]
-    async fn test_respond_with_interpreter() {
-        let mut engine = MockEngine::default();
-        let interpreter = MockInterpreter;
-        engine.data_mut().add_interpreter(Box::new(interpreter));
-
-        let req = Request::builder()
-            .method(Method::GET)
-            .uri("/test")
-            .body(Vec::new())
-            .unwrap();
-
-        let res = engine.data.respond(req).await;
-
-        assert_eq!(res.status(), http::StatusCode::OK);
-    }
-
     #[tokio::test]
     async fn test_respond_with_head_method() {
         let mut engine = MockEngine::default();
@@ -390,15 +342,6 @@ mod tests {
         assert_eq!(engine.data.middlewares.len(), 1);
     }
 
-    #[tokio::test]
-    async fn test_add_interpreter() {
-        let mut engine = MockEngine::default();
-        let interpreter = MockInterpreter;
-        engine.data_mut().add_interpreter(Box::new(interpreter));
-
-        assert_eq!(engine.data.interpreters.len(), 1);
-    }
-
     #[tokio::test]
     async fn test_route() {
         let mut engine = MockEngine::default();
@@ -480,15 +423,6 @@ mod tests {
         assert_eq!(engine.data.middlewares.len(), 1);
     }
 
-    #[tokio::test]
-    async fn test_use_interpreter() {
-        let mut engine = MockEngine::default();
-        let interpreter = MockInterpreter;
-        engine.use_interpreter(interpreter);
-
-        assert_eq!(engine.data.interpreters.len(), 1);
-    }
-
     #[tokio::test]
     async fn test_set_state() {
         let mut engine = MockEngine::default();
diff --git a/crates/shared/src/traits/middleware_trait.rs b/crates/shared/src/traits.rs
similarity index 55%
rename from crates/shared/src/traits/middleware_trait.rs
rename to crates/shared/src/traits.rs
index 10dd554..e0791fc 100644
--- a/crates/shared/src/traits/middleware_trait.rs
+++ b/crates/shared/src/traits.rs
@@ -2,6 +2,47 @@ use std::{future::Future, pin::Pin};
 
 use crate::server::NgynContext;
 
+/// Trait for implementing a gate.
+///
+/// Gates are how Ngyn determines if a route can activate.
+/// Sometimes, a route may need to be guarded by certain conditions.
+/// For instance, restricting access to a route based on the user's role, or checking if the user is authenticated.
+/// Typically, gates are used for this purpose.
+///
+/// ### Examples
+///
+/// ```rust
+/// use ngyn_shared::traits::NgynGate;
+/// use ngyn_shared::server::{NgynContext, NgynResponse};
+///
+/// pub struct AuthGate {}
+///
+/// impl NgynGate for AuthGate {
+///    async fn can_activate(cx: &mut NgynContext) -> bool {
+///      // Check if the user is authenticated
+///      // If the user is authenticated, return true
+///      // Otherwise, return false
+///       false
+///     }
+/// }
+/// ```
+pub trait NgynGate: Send + Sync {
+    /// Determines if the gate can activate for the given request.
+    ///
+    /// ### Arguments
+    ///
+    /// * `cx` - The request context to check.
+    /// * `res` - The response to optionally modify.
+    ///
+    /// ### Returns
+    ///
+    /// Returns `true` if the route can activate, `false` otherwise.
+    #[allow(async_fn_in_trait, unused_variables)]
+    async fn can_activate(cx: &mut NgynContext) -> bool {
+        true // default implementation
+    }
+}
+
 /// Trait for implementing a middleware.
 ///
 /// Middlewares are how Ngyn processes requests.
diff --git a/crates/shared/src/traits/gate_trait.rs b/crates/shared/src/traits/gate_trait.rs
deleted file mode 100644
index 519f795..0000000
--- a/crates/shared/src/traits/gate_trait.rs
+++ /dev/null
@@ -1,42 +0,0 @@
-use crate::server::NgynContext;
-
-/// Trait for implementing a gate.
-///
-/// Gates are how Ngyn determines if a route can activate.
-/// Sometimes, a route may need to be guarded by certain conditions.
-/// For instance, restricting access to a route based on the user's role, or checking if the user is authenticated.
-/// Typically, gates are used for this purpose.
-///
-/// ### Examples
-///
-/// ```rust
-/// use ngyn_shared::traits::NgynGate;
-/// use ngyn_shared::server::{NgynContext, NgynResponse};
-///
-/// pub struct AuthGate {}
-///
-/// impl NgynGate for AuthGate {
-///    async fn can_activate(cx: &mut NgynContext) -> bool {
-///      // Check if the user is authenticated
-///      // If the user is authenticated, return true
-///      // Otherwise, return false
-///       false
-///     }
-/// }
-/// ```
-pub trait NgynGate: Send + Sync {
-    /// Determines if the gate can activate for the given request.
-    ///
-    /// ### Arguments
-    ///
-    /// * `cx` - The request context to check.
-    /// * `res` - The response to optionally modify.
-    ///
-    /// ### Returns
-    ///
-    /// Returns `true` if the route can activate, `false` otherwise.
-    #[allow(async_fn_in_trait, unused_variables)]
-    async fn can_activate(cx: &mut NgynContext) -> bool {
-        true // default implementation
-    }
-}
diff --git a/crates/shared/src/traits/interpreter.rs b/crates/shared/src/traits/interpreter.rs
deleted file mode 100644
index 4e5e14a..0000000
--- a/crates/shared/src/traits/interpreter.rs
+++ /dev/null
@@ -1,34 +0,0 @@
-use crate::server::NgynResponse;
-
-/// NgynInterpreter is used to interpret a response.
-///
-/// Sometimes, a response may need to be interpreted before it is sent back to the client.
-/// Good examples of this are when a response is expected to be in a certain format, or when
-/// the response needs to be modified before it is sent back to the client.
-///
-/// This trait provides a way to do that.
-///
-/// ### Examples
-///
-/// ```rust
-/// use ngyn_shared::traits::NgynInterpreter;
-/// use ngyn_shared::server::NgynResponse;
-///
-/// pub struct ResponseInterpreter {}
-///
-/// #[async_trait::async_trait]
-/// impl NgynInterpreter for ResponseInterpreter {
-///    async fn interpret(&self, res: &mut NgynResponse) {
-///       // Interpret the response here
-///   }
-/// }
-/// ```
-#[async_trait::async_trait]
-pub trait NgynInterpreter: Send + Sync {
-    /// Interprets the response.
-    ///
-    /// ### Arguments
-    ///
-    /// * `res` - The response to be interpreted.
-    async fn interpret(&self, res: &mut NgynResponse);
-}
diff --git a/crates/shared/src/traits/mod.rs b/crates/shared/src/traits/mod.rs
deleted file mode 100644
index e0b9c8c..0000000
--- a/crates/shared/src/traits/mod.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-mod gate_trait;
-mod interpreter;
-mod middleware_trait;
-
-pub use gate_trait::*;
-pub use interpreter::*;
-pub use middleware_trait::*;
diff --git a/crates/swagger-macros/Cargo.toml b/crates/swagger-macros/Cargo.toml
index 3ae5af1..8037383 100644
--- a/crates/swagger-macros/Cargo.toml
+++ b/crates/swagger-macros/Cargo.toml
@@ -16,7 +16,7 @@ ngyn-hyper = { version = "^0.1.0", path = "../../crates/hyper" }
 quote = "1.0"
 serde = { version = "1.0", features = ["derive"] }
 serde_json = "1.0"
-syn = "2.0"
+syn = { version="2.0", features=["full"] }
 
 [lib]
 path = "src/lib.rs"
diff --git a/examples/weather_app/src/main.rs b/examples/weather_app/src/main.rs
index f4a70ae..aa82d8e 100644
--- a/examples/weather_app/src/main.rs
+++ b/examples/weather_app/src/main.rs
@@ -1,5 +1,4 @@
 mod middlewares;
-mod shared;
 mod weather;
 
 use dotenv::dotenv;
@@ -18,7 +17,6 @@ async fn main() -> ShuttleNgyn {
     app.post("/", async_wrap(post_location));
 
     app.use_middleware(NotFoundMiddleware {});
-    app.use_interpreter(shared::ResponseInterpreter {});
 
     Ok(app.into())
 }
diff --git a/examples/weather_app/src/shared.rs b/examples/weather_app/src/shared.rs
deleted file mode 100644
index e05d272..0000000
--- a/examples/weather_app/src/shared.rs
+++ /dev/null
@@ -1,47 +0,0 @@
-use ngyn::{
-    http::StatusCode,
-    prelude::*,
-    shared::{server::response::PeekBytes, traits::NgynInterpreter},
-};
-use serde::{Deserialize, Serialize};
-use serde_json::Value;
-
-#[derive(Serialize, Deserialize)]
-struct ErrorData {
-    status: Option<u16>,
-    message: Option<String>,
-}
-
-type Res = JsonResponse<Value, ErrorData>;
-
-pub struct ResponseInterpreter {}
-
-#[async_trait]
-impl NgynInterpreter for ResponseInterpreter {
-    async fn interpret(&self, res: &mut NgynResponse) {
-        let mut body_str = String::new();
-
-        res.peek_bytes(|bytes| {
-            body_str = String::from_utf8_lossy(bytes).to_string();
-        })
-        .await;
-
-        if let Ok(response) = serde_json::from_str::<Res>(&body_str) {
-            if let Some(error) = response.error() {
-                if let Some(status) = error.status {
-                    res.headers_mut()
-                        .append("Content-Type", "application/json".parse().unwrap());
-                    match StatusCode::from_u16(status) {
-                        Ok(status) => {
-                            *res.status_mut() = status;
-                        }
-                        Err(_) => {
-                            println!("Seems like we set an invalid status code 🫠");
-                            *res.status_mut() = StatusCode::INTERNAL_SERVER_ERROR;
-                        }
-                    }
-                }
-            }
-        }
-    }
-}


Test patch: