neste códio da primeira solução
console.log(`interceptando ${prop}`);
let retorno = Reflect.apply(target[prop], target, arguments);
acao(target);
return retorno;
porque não colocar o return reflect... depois da ação? desta forma
console.log(`interceptando ${prop}`);
acao(target);
return Reflect.apply(target[prop], target, arguments);