summaryrefslogtreecommitdiff
path: root/cli/worker.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/worker.rs')
-rw-r--r--cli/worker.rs76
1 files changed, 36 insertions, 40 deletions
diff --git a/cli/worker.rs b/cli/worker.rs
index 1b931a85d..08ac43659 100644
--- a/cli/worker.rs
+++ b/cli/worker.rs
@@ -128,17 +128,19 @@ impl Worker {
maybe_code,
loader,
modules,
- )
- .get_future(isolate);
- recursive_load.and_then(move |id| {
+ );
+
+ async move {
+ let id = recursive_load.get_future(isolate).await?;
worker.state.global_state.progress.done();
- if is_prefetch {
- futures::future::ok(())
- } else {
+
+ if !is_prefetch {
let mut isolate = worker.isolate.lock().unwrap();
- futures::future::ready(isolate.mod_evaluate(id))
+ return isolate.mod_evaluate(id);
}
- })
+
+ Ok(())
+ }
}
/// Post message to worker as a host.
@@ -235,15 +237,13 @@ mod tests {
tokio_util::run(async move {
let mut worker =
Worker::new("TEST".to_string(), StartupData::None, state, ext);
- worker
+ let result = worker
.execute_mod_async(&module_specifier, None, false)
- .then(|result| {
- if let Err(err) = result {
- eprintln!("execute_mod err {:?}", err);
- }
- tokio_util::panic_on_error(worker)
- })
- .await
+ .await;
+ if let Err(err) = result {
+ eprintln!("execute_mod err {:?}", err);
+ }
+ tokio_util::panic_on_error(worker).await
});
let metrics = &state_.metrics;
@@ -277,15 +277,13 @@ mod tests {
tokio_util::run(async move {
let mut worker =
Worker::new("TEST".to_string(), StartupData::None, state, ext);
- worker
+ let result = worker
.execute_mod_async(&module_specifier, None, false)
- .then(|result| {
- if let Err(err) = result {
- eprintln!("execute_mod err {:?}", err);
- }
- tokio_util::panic_on_error(worker)
- })
- .await
+ .await;
+ if let Err(err) = result {
+ eprintln!("execute_mod err {:?}", err);
+ }
+ tokio_util::panic_on_error(worker).await
});
let metrics = &state_.metrics;
@@ -328,15 +326,14 @@ mod tests {
ext,
);
worker.execute("denoMain()").unwrap();
- worker
+ let result = worker
.execute_mod_async(&module_specifier, None, false)
- .then(|result| {
- if let Err(err) = result {
- eprintln!("execute_mod err {:?}", err);
- }
- tokio_util::panic_on_error(worker)
- })
- .await
+ .await;
+
+ if let Err(err) = result {
+ eprintln!("execute_mod err {:?}", err);
+ }
+ tokio_util::panic_on_error(worker).await
});
assert_eq!(state_.metrics.resolve_count.load(Ordering::SeqCst), 3);
@@ -386,14 +383,13 @@ mod tests {
let worker_ = worker.clone();
- tokio::spawn(
- worker
- .then(move |r| {
- r.unwrap();
- futures::future::ok(())
- })
- .compat(),
- );
+ let fut = async move {
+ let r = worker.await;
+ r.unwrap();
+ Ok(())
+ };
+
+ tokio::spawn(fut.boxed().compat());
let msg = json!("hi").to_string().into_boxed_str().into_boxed_bytes();