async: context: simplify run function

Since we already have a `spawn` function to add async tasks,
get rid of the special "startup" task send to run.  Instead
users should pass the start up work to spawn and call run with
no parameters.

Eventually this will allow us to exit the run-loop for any and all
exceptions from the async context and potentially allow a caller
to re-enter the `run` loop after handling the child exception.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: Ia0e09a2493f0554538315d1d0c238aa11cb44e39
diff --git a/test/async/context.cpp b/test/async/context.cpp
index 39ee28d..34e5bb0 100644
--- a/test/async/context.cpp
+++ b/test/async/context.cpp
@@ -15,8 +15,9 @@
 
     void runToStop()
     {
-        ctx->run(std::execution::just() |
-                 std::execution::then([this]() { ctx->request_stop(); }));
+        ctx->spawn(std::execution::just() |
+                   std::execution::then([this]() { ctx->request_stop(); }));
+        ctx->run();
     }
 
     std::optional<sdbusplus::async::context> ctx{std::in_place};
diff --git a/test/async/timer.cpp b/test/async/timer.cpp
index f377e83..dfa95a6 100644
--- a/test/async/timer.cpp
+++ b/test/async/timer.cpp
@@ -14,8 +14,9 @@
 
     auto start = std::chrono::steady_clock::now();
 
-    ctx.run(sdbusplus::async::sleep_for(ctx, timeout) |
-            std::execution::then([&ctx]() { ctx.request_stop(); }));
+    ctx.spawn(sdbusplus::async::sleep_for(ctx, timeout) |
+              std::execution::then([&ctx]() { ctx.request_stop(); }));
+    ctx.run();
 
     auto stop = std::chrono::steady_clock::now();