• Create a protocol handler that just connects to itself.

    Parameters

    • zone: Zone
    • powers: {
          all: ((maybeVows: unknown[]) => Vow<any[]>);
          allSettled: ((maybeVows: unknown[]) => Vow<({
              status: "fulfilled";
              value: any;
          } | {
              reason: any;
              status: "rejected";
          })[]>);
          allVows: ((maybeVows: unknown[]) => Vow<any[]>);
          asPromise: AsPromiseFunction;
          asVow: (<T>(fn: ((...args: any[]) => Awaited<T> | Vow<Awaited<T>> | PromiseVow<T>)) => Vow<Awaited<T>>);
          makeVowKit: (<T>() => VowKit<T>);
          retriable: (<F>(fnZone: Zone, name: string, fn: F) => F extends ((...args: Args) => Promise<R>)
              ? ((...args: Args) => Vow<R>)
              : never);
          watch: (<T, TResult1, TResult2, C>(specimenP: EVow<T>, watcher?: Watcher<T, TResult1, TResult2, C>, ...watcherArgs: C) => Vow<Narrowest>);
          when: (<T, TResult1, TResult2>(specimenP: T, onFulfilled?: ((value: EUnwrap<T>) => TResult1 | PromiseLike<TResult1>), onRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>)) => Promise<TResult1 | TResult2>);
      }
      • all: ((maybeVows: unknown[]) => Vow<any[]>)
          • (maybeVows): Vow<any[]>
          • Vow-tolerant implementation of Promise.all that takes an iterable of vows and other Passables and returns a single Vow. It resolves with an array of values when all of the input's promises or vows are fulfilled and rejects when any of the input's promises or vows are rejected with the first rejection reason.

            Parameters

            • maybeVows: unknown[]

            Returns Vow<any[]>

      • allSettled: ((maybeVows: unknown[]) => Vow<({
            status: "fulfilled";
            value: any;
        } | {
            reason: any;
            status: "rejected";
        })[]>)
          • (maybeVows): Vow<({
                status: "fulfilled";
                value: any;
            } | {
                reason: any;
                status: "rejected";
            })[]>
          • Vow-tolerant implementation of Promise.allSettled that takes an iterable of vows and other Passables and returns a single Vow. It resolves when all of the input's promises or vows are settled with an array of settled outcome objects.

            Parameters

            • maybeVows: unknown[]

            Returns Vow<({
                status: "fulfilled";
                value: any;
            } | {
                reason: any;
                status: "rejected";
            })[]>

      • allVows: ((maybeVows: unknown[]) => Vow<any[]>)
          • (maybeVows): Vow<any[]>
          • Vow-tolerant implementation of Promise.all that takes an iterable of vows and other Passables and returns a single Vow. It resolves with an array of values when all of the input's promises or vows are fulfilled and rejects when any of the input's promises or vows are rejected with the first rejection reason.

            Parameters

            • maybeVows: unknown[]

            Returns Vow<any[]>

      • asPromise: AsPromiseFunction
      • asVow: (<T>(fn: ((...args: any[]) => Awaited<T> | Vow<Awaited<T>> | PromiseVow<T>)) => Vow<Awaited<T>>)
          • <T>(fn): Vow<Awaited<T>>
          • Helper function that coerces the result of a function to a Vow. Helpful for scenarios like a synchronously thrown error.

            Type Parameters

            • T extends unknown

            Parameters

            • fn: ((...args: any[]) => Awaited<T> | Vow<Awaited<T>> | PromiseVow<T>)
                • (...args): Awaited<T> | Vow<Awaited<T>> | PromiseVow<T>
                • Parameters

                  • Rest...args: any[]

                  Returns Awaited<T> | Vow<Awaited<T>> | PromiseVow<T>

            Returns Vow<Awaited<T>>

      • makeVowKit: (<T>() => VowKit<T>)
          • <T>(): VowKit<T>
          • Type Parameters

            • T

            Returns VowKit<T>

      • retriable: (<F>(fnZone: Zone, name: string, fn: F) => F extends ((...args: Args) => Promise<R>)
            ? ((...args: Args) => Vow<R>)
            : never)
          • <F>(fnZone, name, fn): F extends ((...args: Args) => Promise<R>)
                ? ((...args: Args) => Vow<R>)
                : never
          • TODO FIXME make this real Create a function that retries the given function if the underlying functions rejects due to upgrade disconnection.

            Type Parameters

            • F extends ((...args: any[]) => Promise<any>)

            Parameters

            • fnZone: Zone

              the zone for the named function

            • name: string
            • fn: F

            Returns F extends ((...args: Args) => Promise<R>)
                ? ((...args: Args) => Vow<R>)
                : never

      • watch: (<T, TResult1, TResult2, C>(specimenP: EVow<T>, watcher?: Watcher<T, TResult1, TResult2, C>, ...watcherArgs: C) => Vow<Narrowest>)
          • <T, TResult1, TResult2, C>(specimenP, watcher?, ...watcherArgs): Vow<Narrowest>
          • Type Parameters

            • T = any
            • TResult1 = T
            • TResult2 = never
            • C extends any[] = any[]

              watcher args

            Parameters

            Returns Vow<Narrowest>

      • when: (<T, TResult1, TResult2>(specimenP: T, onFulfilled?: ((value: EUnwrap<T>) => TResult1 | PromiseLike<TResult1>), onRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>)) => Promise<TResult1 | TResult2>)

    Returns ((instancePrefix?: string) => Guarded<{
        generatePortID(_localAddr: any, _protocolHandler: any): Promise<string>;
        onBind(_port: any, _localAddr: any, _protocolHandler: any): Promise<void>;
        onConnect(_port: any, localAddr: string, remoteAddr: string): PromiseVow<AttemptDescription>;
        onCreate(_impl: any, _protocolHandler: any): Promise<void>;
        onInstantiate(_port: any, _localAddr: any, _remote: any, _protocol: any): Promise<string>;
        onListen(port: any, localAddr: any, listenHandler: any, _protocolHandler: any): Promise<void>;
        onListenRemove(port: Remote<Port>, localAddr: string, listenHandler: Remote<ListenHandler>, _protocolHandler: any): Promise<void>;
        onRevoke(_port: any, _localAddr: any, _protocolHandler: any): Promise<void>;
    }>)

      • (instancePrefix?): Guarded<{
            generatePortID(_localAddr: any, _protocolHandler: any): Promise<string>;
            onBind(_port: any, _localAddr: any, _protocolHandler: any): Promise<void>;
            onConnect(_port: any, localAddr: string, remoteAddr: string): PromiseVow<AttemptDescription>;
            onCreate(_impl: any, _protocolHandler: any): Promise<void>;
            onInstantiate(_port: any, _localAddr: any, _remote: any, _protocol: any): Promise<string>;
            onListen(port: any, localAddr: any, listenHandler: any, _protocolHandler: any): Promise<void>;
            onListenRemove(port: Remote<Port>, localAddr: string, listenHandler: Remote<ListenHandler>, _protocolHandler: any): Promise<void>;
            onRevoke(_port: any, _localAddr: any, _protocolHandler: any): Promise<void>;
        }>
      • Parameters

        • OptionalinstancePrefix: string

        Returns Guarded<{
            generatePortID(_localAddr: any, _protocolHandler: any): Promise<string>;
            onBind(_port: any, _localAddr: any, _protocolHandler: any): Promise<void>;
            onConnect(_port: any, localAddr: string, remoteAddr: string): PromiseVow<AttemptDescription>;
            onCreate(_impl: any, _protocolHandler: any): Promise<void>;
            onInstantiate(_port: any, _localAddr: any, _remote: any, _protocol: any): Promise<string>;
            onListen(port: any, localAddr: any, listenHandler: any, _protocolHandler: any): Promise<void>;
            onListenRemove(port: Remote<Port>, localAddr: string, listenHandler: Remote<ListenHandler>, _protocolHandler: any): Promise<void>;
            onRevoke(_port: any, _localAddr: any, _protocolHandler: any): Promise<void>;
        }>