Okay, maybe I have more luck posting code in a comment(?):
var gm4test = {
INFO: true,
DEBUG: false,
log: function(s, info) {
if ((info && window.console) || (gm4test.DEBUG && window.console)) {
window.console.log('*GM4test* '+s);
}
},
getValue: function(name, defval) {
var rt;
if (typeof GM_getValue === 'function') { // GM3 etc
rt = GM_getValue(name, defval);
} else if (typeof GM === 'object' && typeof GM.setValue === 'function') { // GM4
rt = (async function(){return await GM.getValue(name, defval);})();
} else {
alert('Sorry, no support for GM getValue API method');
gm4test.log('Sorry, no support for GM getValue API method', gm4test.INFO);
}
return rt;
},
setValue: function(name, value) {
if (typeof GM_setValue === 'function') { // GM3 etc
GM_setValue(name, value);
} else if (typeof GM === 'object' && typeof GM.setValue === 'function') { // GM4
(async function(){await GM.setValue(name, value);})();
} else {
alert('Sorry, no support for GM setValue API method');
gm4test.log('Sorry, no support for GM setValue API method', gm4test.INFO);
}
},
run: function () {
gm4test.log('Running...');
// Set...
gm4test.setValue('gm4val', 42);
// and get again...
var rv = gm4test.getValue('gm4val', '');
alert('value='+rv); // Expected "value=42", but with GM4 I get "value=[object Promise]" !
}
};
gm4test.run();