diff --git a/Cargo.lock b/Cargo.lock
index b0098bd..1db0b96 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -619,6 +619,17 @@ dependencies = [
"pin-project-lite",
]
+[[package]]
+name = "futures-locks"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "45ec6fe3675af967e67c5536c0b9d44e34e6c52f86bedc4ea49c5317b8e94d06"
+dependencies = [
+ "futures-channel",
+ "futures-task",
+ "tokio",
+]
+
[[package]]
name = "futures-macro"
version = "0.3.31"
@@ -798,9 +809,9 @@ dependencies = [
[[package]]
name = "konst"
-version = "0.4.1"
+version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e1b7495a4af30134f36ab2018716ba98b092019a6c5dc2126b94e3241c170748"
+checksum = "64896bdfd7906cfb0b57bc04f08bde408bcd6aaf71ff438ee471061cd16f2e86"
dependencies = [
"const_panic",
"konst_proc_macros",
@@ -1029,11 +1040,11 @@ name = "orchid-extension"
version = "0.1.0"
dependencies = [
"async-fn-stream",
- "async-lock",
"async-once-cell",
"derive_destructure",
"dyn-clone",
"futures",
+ "futures-locks",
"hashbrown 0.16.0",
"include_dir",
"itertools",
@@ -1060,12 +1071,12 @@ name = "orchid-host"
version = "0.1.0"
dependencies = [
"async-fn-stream",
- "async-lock",
"async-once-cell",
"async-process",
"bound",
"derive_destructure",
"futures",
+ "futures-locks",
"hashbrown 0.16.0",
"itertools",
"lazy_static",
@@ -1086,6 +1097,7 @@ dependencies = [
name = "orchid-std"
version = "0.1.0"
dependencies = [
+ "async-fn-stream",
"async-once-cell",
"futures",
"hashbrown 0.16.0",
@@ -1431,9 +1443,9 @@ dependencies = [
[[package]]
name = "rust_decimal"
-version = "1.37.2"
+version = "1.38.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b203a6425500a03e0919c42d3c47caca51e79f1132046626d2c8871c5092035d"
+checksum = "c8975fc98059f365204d635119cf9c5a60ae67b841ed49b5422a9a7e56cdfac0"
dependencies = [
"arrayvec",
"borsh",
diff --git a/async-fn-stream/src/lib.rs b/async-fn-stream/src/lib.rs
index 2a8af10..1b5ff22 100644
--- a/async-fn-stream/src/lib.rs
+++ b/async-fn-stream/src/lib.rs
@@ -1,114 +1,44 @@
-use std::cell::Cell;
-use std::future::poll_fn;
use std::marker::PhantomData;
-use std::pin::Pin;
-use std::ptr;
-use std::task::{Context, Poll};
-use futures::future::LocalBoxFuture;
-use futures::{FutureExt, Stream};
-
-type YieldSlot<'a, T> = &'a Cell