/**
 * Non-durable work scheduled outside the originating application operation.
 */
export type BestEffortWork = () => Promise<void> | void;

/**
 * Non-durable, best-effort follow-up work.
 *
 * Use this for follow-up work that may be lost without changing the outcome
 * of the originating operation. Required or retryable work belongs in a job
 * or durable outbox instead.
 */
export interface BestEffortWorkPort {
  /**
   * Schedule work without waiting for it in the originating operation.
   *
   * Adapters should isolate scheduling and callback failures from the caller
   * and report them through their configured error observer.
   */
  defer(work: BestEffortWork): void;
}
