fix(napi): cleanup inner Stream when complete (#2643)

- Close https://github.com/napi-rs/napi-rs/issues/2604
This commit is contained in:
LongYinan 2025-05-17 22:41:22 +08:00 committed by GitHub
parent 4407678a25
commit fddf6109b0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -564,7 +564,7 @@ fn pull_callback_impl<
let env = Env::from_raw(env);
let promise = env.spawn_future_with_callback(
async move { stream.next().await.transpose() },
|env, val| {
move |env, val| {
let mut output = Object::new(&env)?;
if let Some(val) = val {
output.set("value", val)?;
@ -572,10 +572,8 @@ fn pull_callback_impl<
} else {
output.set("value", Null)?;
output.set("done", true)?;
drop(unsafe { Box::from_raw(data.cast::<S>()) });
}
unsafe {
crate::__private::log_js_value("log", env.0, [output.0.value]);
};
Ok(output.0.value)
},
)?;
@ -651,6 +649,7 @@ fn pull_callback_impl_bytes<
} else {
let close_fn = close.borrow_back(&env)?;
close_fn.call(())?;
drop(unsafe { Box::from_raw(data.cast::<S>()) });
}
drop(enqueue);
drop(close);