diff --git a/indexedDb/impl/channels/implementation.go b/indexedDb/impl/channels/implementation.go
index 35bf00323ada8eb8cb7cb9cf5282c7d72c2b9863..5f8273a2ccc9a6b6690c2988b65ee1e1e304deb2 100644
--- a/indexedDb/impl/channels/implementation.go
+++ b/indexedDb/impl/channels/implementation.go
@@ -414,7 +414,7 @@ func (w *wasmModel) upsertMessage(msg *Message) (uint64, error) {
 
 	// Store message to database
 	msgIdObj, err := impl.Put(w.db, messageStoreName, messageObj)
-	if err != nil || msgIdObj.Equal(js.Undefined()) {
+	if err != nil {
 		return 0, errors.Errorf("Unable to put Message: %+v\n%s",
 			err, newMessageJson)
 	}
diff --git a/indexedDb/impl/dm/implementation.go b/indexedDb/impl/dm/implementation.go
index 8d13915d834768eb819265da60f6073e3ebd1bda..1c8e18050d8c36c32ede354f9afaa9a6af1993db 100644
--- a/indexedDb/impl/dm/implementation.go
+++ b/indexedDb/impl/dm/implementation.go
@@ -317,7 +317,7 @@ func (w *wasmModel) upsertMessage(msg *Message) (uint64, error) {
 
 	// Store message to database
 	msgIdObj, err := impl.Put(w.db, messageStoreName, messageObj)
-	if err != nil || msgIdObj.Equal(js.Undefined()) {
+	if err != nil {
 		return 0, errors.Errorf("Unable to put Message: %+v\n%s",
 			err, newMessageJson)
 	}
diff --git a/indexedDb/impl/utils.go b/indexedDb/impl/utils.go
index 3765cfce5e01698ca625844b5fe495906985366a..c2756f61d19eda0fc40c266d41c7449213c9d902 100644
--- a/indexedDb/impl/utils.go
+++ b/indexedDb/impl/utils.go
@@ -76,6 +76,8 @@ func Get(db *idb.Database, objectStoreName string, key js.Value) (js.Value, erro
 	if err != nil {
 		return js.Undefined(), errors.WithMessagef(parentErr,
 			"Unable to get from ObjectStore: %+v", err)
+	} else if err = ctx.Err(); errors.Is(err, context.DeadlineExceeded) {
+		return js.Null(), errors.Wrapf(err, "timed out after %s", dbTimeout)
 	} else if resultObj.IsUndefined() {
 		return js.Undefined(), errors.WithMessagef(parentErr,
 			"Unable to get from ObjectStore: %s", ErrDoesNotExist)
@@ -164,6 +166,8 @@ func GetIndex(db *idb.Database, objectStoreName,
 	if err != nil {
 		return js.Undefined(), errors.WithMessagef(parentErr,
 			"Unable to get from ObjectStore: %+v", err)
+	} else if err = ctx.Err(); errors.Is(err, context.DeadlineExceeded) {
+		return js.Null(), errors.Wrapf(err, "timed out after %s", dbTimeout)
 	} else if resultObj.IsUndefined() {
 		return js.Undefined(), errors.WithMessagef(parentErr,
 			"Unable to get from ObjectStore: %s", ErrDoesNotExist)
@@ -202,6 +206,8 @@ func Put(db *idb.Database, objectStoreName string, value js.Value) (js.Value, er
 	if err != nil {
 		return js.Undefined(), errors.Errorf("Putting value failed: %+v\n%s",
 			err, utils.JsToJson(value))
+	} else if err = ctx.Err(); errors.Is(err, context.DeadlineExceeded) {
+		return js.Null(), errors.Wrapf(err, "timed out after %s", dbTimeout)
 	}
 	jww.DEBUG.Printf("Successfully put value in %s: %s",
 		objectStoreName, utils.JsToJson(value))
@@ -239,6 +245,8 @@ func Delete(db *idb.Database, objectStoreName string, key js.Value) error {
 	if err != nil {
 		return errors.WithMessagef(parentErr,
 			"Unable to Delete from ObjectStore: %+v", err)
+	} else if err = ctx.Err(); errors.Is(err, context.DeadlineExceeded) {
+		return errors.Wrapf(err, "timed out after %s", dbTimeout)
 	}
 	jww.DEBUG.Printf("Successfully deleted value at %s/%s",
 		objectStoreName, utils.JsToJson(key))
diff --git a/utils/utils.go b/utils/utils.go
index cb1e46f3859695e7c77fbf0c9403eb24b7b10ff4..8f156761dd4919cfb4e92b93d91acef0253c6901 100644
--- a/utils/utils.go
+++ b/utils/utils.go
@@ -61,10 +61,12 @@ type PromiseFn func(resolve, reject func(args ...any) js.Value)
 // Go function to Javascript.
 func CreatePromise(f PromiseFn) any {
 	// Create handler for promise (this will be a Javascript function)
-	handler := js.FuncOf(func(this js.Value, args []js.Value) any {
+	var handler js.Func
+	handler = js.FuncOf(func(this js.Value, args []js.Value) any {
 		// Spawn a new go routine to perform the blocking function
 		go func(resolve, reject js.Value) {
 			f(resolve.Invoke, reject.Invoke)
+			go func() { handler.Release() }()
 		}(args[0], args[1])
 
 		return nil
diff --git a/worker/manager.go b/worker/manager.go
index 1f8328c97f0aa2c9059edc3a6042f423e9c89b17..3a5831db7c07a54927429b8d818dd66db7b9fc7a 100644
--- a/worker/manager.go
+++ b/worker/manager.go
@@ -325,8 +325,8 @@ func (m *Manager) addEventListeners() {
 	// Doc: https://developer.mozilla.org/en-US/docs/Web/API/Worker/error_event
 	errorEvent := js.FuncOf(func(_ js.Value, args []js.Value) any {
 		event := args[0]
-		jww.ERROR.Printf("[WW] [%s] Main received error event: %s",
-			m.name, utils.JsErrorToJson(event))
+		jww.FATAL.Panicf("[WW] [%s] Main received error event: %+v",
+			m.name, js.Error{Value: event})
 		return nil
 	})
 
@@ -335,8 +335,8 @@ func (m *Manager) addEventListeners() {
 	// Doc: https://developer.mozilla.org/en-US/docs/Web/API/Worker/messageerror_event
 	messageerrorEvent := js.FuncOf(func(_ js.Value, args []js.Value) any {
 		event := args[0]
-		jww.ERROR.Printf("[WW] [%s] Main received message error event: %s",
-			m.name, utils.JsErrorToJson(event))
+		jww.ERROR.Printf("[WW] [%s] Main received message error event: %+v",
+			m.name, js.Error{Value: event})
 		return nil
 	})