(
fiberId: FiberId.FiberId,
self: STM.STM<A, E, R>,
txnId: TxnId.TxnId,
state: { value: STMState.STMState<A, E> },
context: Context.Context<R>,
scheduler: Scheduler.Scheduler,
priority: number,
k: (effect: Effect.Effect<A, E, R>) => unknown
)
| 355 | |
| 356 | /** @internal */ |
| 357 | const tryCommitAsync = <A, E, R>( |
| 358 | fiberId: FiberId.FiberId, |
| 359 | self: STM.STM<A, E, R>, |
| 360 | txnId: TxnId.TxnId, |
| 361 | state: { value: STMState.STMState<A, E> }, |
| 362 | context: Context.Context<R>, |
| 363 | scheduler: Scheduler.Scheduler, |
| 364 | priority: number, |
| 365 | k: (effect: Effect.Effect<A, E, R>) => unknown |
| 366 | ) => { |
| 367 | if (STMState.isRunning(state.value)) { |
| 368 | const result = tryCommit(fiberId, self, state, context, scheduler, priority) |
| 369 | switch (result._tag) { |
| 370 | case TryCommitOpCodes.OP_DONE: { |
| 371 | completeTryCommit(result.exit, k) |
| 372 | break |
| 373 | } |
| 374 | case TryCommitOpCodes.OP_SUSPEND: { |
| 375 | Journal.addTodo( |
| 376 | txnId, |
| 377 | result.journal, |
| 378 | () => tryCommitAsync(fiberId, self, txnId, state, context, scheduler, priority, k) |
| 379 | ) |
| 380 | break |
| 381 | } |
| 382 | } |
| 383 | } |
| 384 | } |
| 385 | |
| 386 | /** @internal */ |
| 387 | const completeTodos = <A, E>( |
no test coverage detected