impl {{ core_import }}::{{ trait_name }} for {{ bridge_name }} {
fn {{ dispatch_name }}(
&self{{ extra_param }},
{{ wire_name }}: {{ req_path }},
) -> std::pin::Pin<Box<dyn std::future::Future<Output = {{ output_type }}> + Send + '_>> {
Box::pin(async move {
// Serialize request to JSON and call the ThreadsafeFunction
let outcome: {{ wire_output }} = async move {
let req_json = serde_json::to_value(&{{ wire_name }})
.map_err(|e| Box::new(e) as {{ box_err }})?;
let resp_json = self.handler_fn
.call_async(Ok(req_json))
.await
.map_err(|e| Box::new(e) as {{ box_err }})?;
serde_json::from_value(resp_json)
.map_err(|e| Box::new(e) as {{ box_err }})
}
.await;
{{ tail }}
})
}
}