Check that while Runtime.getProperties call on proxy object no user defined trap will be executed. Testing regular Proxy { id : result : { result : { className : Object description : Proxy(Object) objectId : preview : { description : Proxy(Object) overflow : false properties : [ [0] : { name : a type : number value : 1 } ] subtype : proxy type : object } subtype : proxy type : object } } } { id : result : { internalProperties : [ [0] : { name : [[Handler]] value : { className : Object description : Object objectId : type : object } } [1] : { name : [[Target]] value : { className : Object description : Object objectId : type : object } } [2] : { name : [[IsRevoked]] value : { type : boolean value : false } } ] result : [ ] } } Testing revocable Proxy { id : result : { result : { className : Object description : Proxy(Object) objectId : preview : { description : Proxy(Object) overflow : false properties : [ [0] : { name : a type : number value : 1 } ] subtype : proxy type : object } subtype : proxy type : object } } } { id : result : { internalProperties : [ [0] : { name : [[Handler]] value : { className : Object description : Object objectId : type : object } } [1] : { name : [[Target]] value : { className : Object description : Object objectId : type : object } } [2] : { name : [[IsRevoked]] value : { type : boolean value : false } } ] result : [ ] } } { id : result : { result : { className : Object description : Proxy objectId : preview : { description : Proxy overflow : false properties : [ ] subtype : proxy type : object } subtype : proxy type : object } } } { id : result : { internalProperties : [ [0] : { name : [[Handler]] value : { subtype : null type : object value : null } } [1] : { name : [[Target]] value : { subtype : null type : object value : null } } [2] : { name : [[IsRevoked]] value : { type : boolean value : true } } ] result : [ ] } } Checking counter { id : result : { result : { description : 0 type : number value : 0 } } }