makeChildHost = async (
      petName,
      { introducedNames = {}, agentName = undefined } = {},
    ) => {
      let host = getNamedAgent(petName, 'host');
      await null;
      if (host === undefined) {
        const { value, id } =
          // Behold, recursion:
          await formulateHost(
            endoId,
            networksDirectoryId,
            pinsDirectoryId,
            getDeferredTasksForAgent(petName, agentName),
          );
        host = { value: Promise.resolve(value), id };
      }

      await introduceNamesToAgent(host.id, introducedNames);

      /** @type {{ id: string, value: Promise<EndoHost> }} */
      return host;
    }
@param {string} [petName]
@param {MakeHostOrGuestOptions} [opts]
@returns {Promise<{id: string, value: Promise<EndoHost>}>}