diff --git a/net/reqwest/src/reqwesthttpsrc/imp.rs b/net/reqwest/src/reqwesthttpsrc/imp.rs
index bdeb6077..98d94e91 100644
--- a/net/reqwest/src/reqwesthttpsrc/imp.rs
+++ b/net/reqwest/src/reqwesthttpsrc/imp.rs
@@ -139,13 +139,31 @@ enum State {
},
}
-#[derive(Debug, Default)]
+#[derive(Default)]
+enum Canceller {
+ #[default]
+ None,
+ Handle(future::AbortHandle),
+ Cancelled,
+}
+
+impl Canceller {
+ fn abort(&mut self) {
+ if let Canceller::Handle(ref canceller) = *self {
+ canceller.abort();
+ }
+
+ *self = Canceller::Cancelled;
+ }
+}
+
+#[derive(Default)]
pub struct ReqwestHttpSrc {
client: Mutex