Unlike raw WebSockets where frames are fire-and-forget, subatom-pulse provides first-class RPC acknowledgements via callbacks or Promises (emitWithAck).
1// Client Promise RPC with 3000ms timeout1try {1 const result = await socket.emitWithAck<{ status: string }>(1 "order.checkout",1 { cartId: "cart_9981" },1 30001 );1 console.log("Order confirmed:", result.status);1} catch (err: any) {1 // Handles server exceptions, network drops, or timeout expirations1 console.error("Checkout failed:", err.message);1}11// Server handler replying to acknowledgement callback1socket.on("order.checkout", async (data, ack) => {1 const status = await processOrder(data.cartId);1 ack?.({ status: "success", orderId: "ord_123" });1});
HANDLER_ERROR. The client's emitWithAck Promise rejects cleanly with that message.