diff --git a/keyserver/src/utils/olm-objects.js b/keyserver/src/utils/olm-objects.js --- a/keyserver/src/utils/olm-objects.js +++ b/keyserver/src/utils/olm-objects.js @@ -27,20 +27,21 @@ const account = new olm.Account(); account.unpickle(picklingKey, pickledAccount); - let result; try { - result = await callback(account, picklingKey); + const result = await callback(account, picklingKey); + const updatedAccount = account.pickle(picklingKey); + return { + result, + pickledOlmAccount: { + ...pickledOlmAccount, + pickledAccount: updatedAccount, + }, + }; } catch (e) { throw new ServerError(getMessageForException(e) ?? 'unknown_error'); + } finally { + account.free(); } - const updatedAccount = account.pickle(picklingKey); - - account.free(); - - return { - result, - pickledOlmAccount: { ...pickledOlmAccount, pickledAccount: updatedAccount }, - }; } async function createPickledOlmAccount(): Promise<PickledOlmAccount> { @@ -75,23 +76,21 @@ const session = new olm.Session(); session.unpickle(picklingKey, pickledSession); - let result; try { - result = await callback(session); + const result = await callback(session); + const updatedSession = session.pickle(picklingKey); + return { + result, + pickledOlmSession: { + ...pickledOlmSession, + pickledSession: updatedSession, + }, + }; } catch (e) { throw new ServerError(getMessageForException(e) ?? 'unknown_error'); + } finally { + session.free(); } - const updatedSession = session.pickle(picklingKey); - - session.free(); - - return { - result, - pickledOlmSession: { - ...pickledOlmSession, - pickledSession: updatedSession, - }, - }; } async function createPickledOlmSession(