diff --git a/read.js b/read.js index 0587d5501..7148d50f4 100644 --- a/read.js +++ b/read.js @@ -401,17 +401,23 @@ export function addReadMethods( keySize = this.writeKey(id, keyBytes, 4); } }; - setKeyBytes(); - let sharedBuffer = getUserSharedBuffer( - env.address, - keySize, - defaultBuffer, - options?.callback, - ); - sharedBuffer.notify = () => { + let userSharedBuffers = + this._userSharedBuffers || (this._userSharedBuffers = new Map()); + let sharedBuffer = userSharedBuffers.get(id.toString()); + if (!sharedBuffer) { setKeyBytes(); - return notifyUserCallbacks(env.address, keySize); - }; + sharedBuffer = getUserSharedBuffer( + env.address, + keySize, + defaultBuffer, + options?.callback, + ); + userSharedBuffers.set(id.toString(), sharedBuffer); + sharedBuffer.notify = () => { + setKeyBytes(); + return notifyUserCallbacks(env.address, keySize); + }; + } return sharedBuffer; },