diff --git a/wasm/dm.go b/wasm/dm.go
index 92f47125aa1dddd9ecc4f6258e12751277108f1a..e993aa28e799acbd07ca769c89030d111c77b2eb 100644
--- a/wasm/dm.go
+++ b/wasm/dm.go
@@ -397,10 +397,15 @@ func (dmc *DMClient) SetNickname(_ js.Value, args []js.Value) any {
 //
 // Parameters:
 //   - args[0] - The partner's [ed25519.PublicKey] key to block (Uint8Array).
+//
+// Returns a promise that exits upon completion.
 func (dmc *DMClient) BlockPartner(_ js.Value, args []js.Value) any {
 	partnerPubKey := utils.CopyBytesToGo(args[0])
-	dmc.api.BlockPartner(partnerPubKey)
-	return nil
+	promiseFn := func(resolve, reject func(args ...any) js.Value) {
+		dmc.api.BlockPartner(partnerPubKey)
+		resolve()
+	}
+	return utils.CreatePromise(promiseFn)
 }
 
 // UnblockPartner unblocks a blocked partner to allow DM messages.
@@ -409,8 +414,11 @@ func (dmc *DMClient) BlockPartner(_ js.Value, args []js.Value) any {
 //   - args[0] - The partner's [ed25519.PublicKey] to unblock (Uint8Array).
 func (dmc *DMClient) UnblockPartner(_ js.Value, args []js.Value) any {
 	partnerPubKey := utils.CopyBytesToGo(args[0])
-	dmc.api.UnblockPartner(partnerPubKey)
-	return nil
+	promiseFn := func(resolve, reject func(args ...any) js.Value) {
+		dmc.api.UnblockPartner(partnerPubKey)
+		resolve()
+	}
+	return utils.CreatePromise(promiseFn)
 }
 
 // IsBlocked indicates if the given partner is blocked.
@@ -423,7 +431,11 @@ func (dmc *DMClient) UnblockPartner(_ js.Value, args []js.Value) any {
 //   - boolean
 func (dmc *DMClient) IsBlocked(_ js.Value, args []js.Value) any {
 	partnerPubKey := utils.CopyBytesToGo(args[0])
-	return dmc.api.IsBlocked(partnerPubKey)
+	promiseFn := func(resolve, reject func(args ...any) js.Value) {
+		isBlocked := dmc.api.IsBlocked(partnerPubKey)
+		resolve(isBlocked)
+	}
+	return utils.CreatePromise(promiseFn)
 }
 
 // GetBlockedPartners returns all partners who are blocked by this user.
@@ -439,7 +451,11 @@ func (dmc *DMClient) IsBlocked(_ js.Value, args []js.Value) any {
 //	  "CWDqF1bnhulW2pko+zgmbDZNaKkmNtFdUgY4bTm2DhA="
 //	]
 func (dmc *DMClient) GetBlockedPartners(js.Value, []js.Value) any {
-	return utils.CopyBytesToJS(dmc.api.GetBlockedPartners())
+	promiseFn := func(resolve, reject func(args ...any) js.Value) {
+		blocked := utils.CopyBytesToJS(dmc.api.GetBlockedPartners())
+		resolve(blocked)
+	}
+	return utils.CreatePromise(promiseFn)
 }
 
 ////////////////////////////////////////////////////////////////////////////////