summaryrefslogtreecommitdiff
path: root/cli/ops/dispatch_json.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/ops/dispatch_json.rs')
-rw-r--r--cli/ops/dispatch_json.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/cli/ops/dispatch_json.rs b/cli/ops/dispatch_json.rs
index de1f0a752..87cfff51d 100644
--- a/cli/ops/dispatch_json.rs
+++ b/cli/ops/dispatch_json.rs
@@ -14,6 +14,9 @@ pub type AsyncJsonOp =
pub enum JsonOp {
Sync(Value),
Async(AsyncJsonOp),
+ /// AsyncUnref is the variation of Async, which doesn't block the program
+ /// exiting.
+ AsyncUnref(AsyncJsonOp),
}
fn json_err(err: ErrBox) -> Value {
@@ -77,6 +80,13 @@ where
});
CoreOp::Async(fut2.boxed())
}
+ Ok(JsonOp::AsyncUnref(fut)) => {
+ assert!(promise_id.is_some());
+ let fut2 = fut.then(move |result| {
+ futures::future::ok(serialize_result(promise_id, result))
+ });
+ CoreOp::AsyncUnref(fut2.boxed())
+ }
Err(sync_err) => {
let buf = serialize_result(promise_id, Err(sync_err));
if is_sync {