diff --git a/src/api/objects/ObjectAPI.js b/src/api/objects/ObjectAPI.js index 052192db3d..4e71f3af6d 100644 --- a/src/api/objects/ObjectAPI.js +++ b/src/api/objects/ObjectAPI.js @@ -225,24 +225,21 @@ export default class ObjectAPI { throw new Error('Provider does not support get!'); } - let objectPromise = provider.get(identifier, abortSignal).then(result => { + let objectPromise = provider.get(identifier, abortSignal).then(domainObject => { delete this.cache[keystring]; + domainObject = this.applyGetInterceptors(identifier, domainObject); - result = this.applyGetInterceptors(identifier, result); - if (result.isMutable) { - result.$refresh(result); - } else { - let mutableDomainObject = this.toMutable(result); - mutableDomainObject.$refresh(result); + if (this.supportsMutation(identifier)) { + const mutableDomainObject = this.toMutable(domainObject); + mutableDomainObject.$refresh(domainObject); + this.destroyMutable(mutableDomainObject); } - return result; - }).catch((result) => { - console.warn(`Failed to retrieve ${keystring}:`, result); - + return domainObject; + }).catch((error) => { + console.warn(`Failed to retrieve ${keystring}:`, error); delete this.cache[keystring]; - - result = this.applyGetInterceptors(identifier); + const result = this.applyGetInterceptors(identifier); return result; });