Here's some logic I'm using to run a function in a tab and get the results (single value).
let myResults = await scriptWait(myTabID,myFunction);
async function scriptWait(target, runfunc)
{
return new Promise((resolve, reject) =>
{
try
{
if(!target?.tabId) { resolve(); }
chrome.scripting.executeScript(
{
target : target,
func : runfunc
},
function (result)
{
if(result)
{
resolve(result[0].result);
}
resolve();
});
}
catch {resolve();}
});
}