This is in a background script. Everything seems to work down to the result, but my list variable seems to be empty no matter where I declare it in the scope. How do I use sendResponse to get the data back to my content script? What am I missing?
chrome.runtime.onMessage.addListener(
  function (request, sender, sendResponse) {
    list = [];
    // list available channels
    if (request.action.includes("channels")) {
      function inContent() {
        let elems = document.getElementsByClassName("name-sec");
        let channelsList = [];
        for (let ii = 0; ii < elems.length; ii++) {
          let channel = elems[ii];
          channelsList.push(channel.innerText);
        }
        return channelsList;
      }
      chrome.tabs.executeScript({ code: `(${inContent})()` }, function (result) {
        list = result[0];
      });
      // list is empty
      sendResponse({action: `Channels List:${"\n"}${list.join("\n")}`})
    }
  }
);
 
    