No vídeo você fala que o get em quantidade está sendo interceptado duas vezes simplesmente porque o modelo possui o getter "quantidade" e a propriedade "_quantidade", porém não é isso. Entendo que o interceptor está sendo executado duas vezes porque você usou o Reflect.get dentro da função interceptadora do proxy:
Esse código acaba invocando o proxy duas vezes:
get: function(target, prop, receiver) {
// O Reflect.get faz com que o proxy seja executado novamente
return Reflect.get(target, prop, receiver);
}
Já esse código, invoca "interceptador" do proxy apenas uma vez:
get: function(target, prop, receiver) {
//Dessa forma o proxy não está sendo executado novamente para a leitura do campo _quantidade.
return target[prop];
}