code: async function composeConfig() {
      const {QNAMAKER_SUBSCRIPTION_KEY, QNAMAKER_HOSTNAME, QNAMAKER_ENDPOINTKEY, QNAMAKER_KBID} = process.env;
      const {subscriptionKey, hostname, endpointKey, kbId} = args;
  
      let qnamakerrcJson = {};
      let config;
      try {
          await fs.access(path.join(process.cwd(), '.qnamakerrc'), fs.R_OK);
          qnamakerrcJson = JSON.parse(await txtfile.read(path.join(process.cwd(), '.qnamakerrc')));
      } catch (e) {
          // Do nothing
      } finally {
          config = {
              subscriptionKey: (subscriptionKey || qnamakerrcJson.subscriptionKey || QNAMAKER_SUBSCRIPTION_KEY),
              hostname: (hostname || qnamakerrcJson.hostname || QNAMAKER_HOSTNAME),
              endpointKey: (endpointKey || qnamakerrcJson.endpointKey || QNAMAKER_ENDPOINTKEY),
              kbId: (kbId || qnamakerrcJson.kbId || QNAMAKER_KBID)
          };
      }
      return config;
  }
docs: Composes the config from the 3 sources that it may reside.
  Precedence is 1. Arguments, 2. qnamakerrc and 3. env variables
  
  @returns {Promise<*>}