var called = [];
var proxy = new Proxy({a: 1}, {
    getOwnPropertyDescriptor(target, P) {
        called.push("getOwnPropertyDescriptor");
        return Object.getOwnPropertyDescriptor(target, P);
    },
    defineProperty(target, P, desc) {
        called.push("defineProperty");
        assertEq(Object.getOwnPropertyNames(desc).length, 1);
        assertEq(desc.configurable, false);
        return Object.defineProperty(target, P, desc);
    }
});

Object.seal(proxy);
assertEq(called.toString(), "defineProperty");