MCPcopy Create free account
hub / github.com/UsefulSoftwareCo/executor / awaitCompletionOrPause

Function awaitCompletionOrPause

packages/core/execution/src/engine.ts:614–635  ·  view source on GitHub ↗
(
    fiber: Fiber.Fiber<ExecuteResult, E>,
    pauseQueue: Queue.Queue<InternalPausedExecution<E>>,
  )

Source from the content-addressed store, hash-verified

612 * settles on whichever side completes first, success or failure.
613 */
614 const awaitCompletionOrPause = (
615 fiber: Fiber.Fiber<ExecuteResult, E>,
616 pauseQueue: Queue.Queue<InternalPausedExecution<E>>,
617 ): Effect.Effect<ExecutionResult, E> =>
618 Effect.raceFirst(
619 Fiber.join(fiber).pipe(
620 Effect.map(
621 (result): ExecutionResult => ({
622 status: "completed",
623 result,
624 }),
625 ),
626 ),
627 Queue.take(pauseQueue).pipe(
628 Effect.map(
629 (paused): ExecutionResult => ({
630 status: "paused",
631 execution: paused,
632 }),
633 ),
634 ),
635 );
636
637 /**
638 * Start an execution in pause/resume mode.

Callers 1

createExecutionEngineFunction · 0.85

Calls 1

takeMethod · 0.80

Tested by

no test coverage detected