From 82cb8e81bb0ad9df028bff508c808531cafdf0f5 Mon Sep 17 00:00:00 2001
From: "Richard T. Carback III" <rick.carback@gmail.com>
Date: Tue, 20 Jun 2023 17:48:41 +0000
Subject: [PATCH] Convert GetOrInitPassword to return a promise and throw the
 exception directly

---
 storage/password.go | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/storage/password.go b/storage/password.go
index 95abcb4f..bd7bbec5 100644
--- a/storage/password.go
+++ b/storage/password.go
@@ -93,17 +93,20 @@ const (
 // Parameters:
 //   - args[0] - The user supplied password (string).
 //
-// Returns:
+// Returns a promise:
 //   - Internal password (Uint8Array).
 //   - Throws TypeError on failure.
 func GetOrInitPassword(_ js.Value, args []js.Value) any {
-	internalPassword, err := getOrInit(args[0].String())
-	if err != nil {
-		exception.ThrowTrace(err)
-		return nil
+	promiseFn := func(resolve, reject func(args ...any) js.Value) {
+		internalPassword, err := getOrInit(args[0].String())
+		if err != nil {
+			reject(exception.NewTrace(err))
+		} else {
+			resolve(utils.CopyBytesToJS(internalPassword))
+		}
 	}
 
-	return utils.CopyBytesToJS(internalPassword)
+	return utils.CreatePromise(promiseFn)
 }
 
 // ChangeExternalPassword allows a user to change their external password.
-- 
GitLab