EndpointResolver
Where a client finds the service of a context: the base URL of its Port, such as http://ordering:8080. Wow keeps no registry and balances no load: a resolver that picks an instance per call (from a service registry, DNS or a sidecar) is the application's, and is asked again on every attempt, so a retry may reach another instance.
Such a resolver overrides reaches to say which contexts it serves. A lookup of one of them that finds no instance is then an outage: the call fails as wow.peer.unavailable, which a client retries and a saga's subscription waits out. Without it, an empty answer is taken for a context the client was given no URL of, the code's mistake.
Functions
Whether context's port may be found, without looking it up: a node checks at startup that its sagas reach the contexts they call, and a peer found by DNS need not be up then. Whether resolve finds one, by default: a resolver that looks instances up overrides it, or a lookup that finds none fails as a missing URL would.
Every base URL of context's port, the nodes a request may go to in turn: the client rotates through them and fails over to the next on a connection that was not made, or on a node that refused before handling. resolve's alone by default. None is an outage for a context it reaches, a missing URL for any other.