(
fiber: Fiber.Fiber<ExecuteResult, E>,
pauseQueue: Queue.Queue<InternalPausedExecution<E>>,
)
| 638 | * settles on whichever side completes first, success or failure. |
| 639 | */ |
| 640 | const awaitCompletionOrPause = ( |
| 641 | fiber: Fiber.Fiber<ExecuteResult, E>, |
| 642 | pauseQueue: Queue.Queue<InternalPausedExecution<E>>, |
| 643 | ): Effect.Effect<ExecutionResult, E> => |
| 644 | Effect.raceFirst( |
| 645 | Fiber.join(fiber).pipe( |
| 646 | Effect.map( |
| 647 | (result): ExecutionResult => ({ |
| 648 | status: "completed", |
| 649 | result, |
| 650 | }), |
| 651 | ), |
| 652 | ), |
| 653 | Queue.take(pauseQueue).pipe( |
| 654 | Effect.map( |
| 655 | (paused): ExecutionResult => ({ |
| 656 | status: "paused", |
| 657 | execution: paused, |
| 658 | }), |
| 659 | ), |
| 660 | ), |
| 661 | ); |
| 662 | |
| 663 | /** |
| 664 | * Start an execution in pause/resume mode. |
no test coverage detected