makeGuest = async (
      handleName,
      { introducedNames = {}, agentName = undefined } = {},
    ) => {
      let guest = getNamedAgent(handleName, 'guest');
      await null;
      if (guest === undefined) {
        const { value, id } =
          // Behold, recursion:
          await formulateGuest(
            hostId,
            handleId,
            getDeferredTasksForAgent(handleName, agentName),
          );
        guest = { value: Promise.resolve(value), id };
      }

      await introduceNamesToAgent(guest.id, introducedNames);

      /** @type {{ id: string, value: Promise<EndoGuest> }} */
      return guest;
    }
@param {string} [handleName]
@param {MakeHostOrGuestOptions} [opts]
@returns {Promise<{id: string, value: Promise<EndoGuest>}>}