diff --git a/cmd/droplet-client/retrieval.go b/cmd/droplet-client/retrieval.go
index 97c0c32b..c05803ee 100644
--- a/cmd/droplet-client/retrieval.go
+++ b/cmd/droplet-client/retrieval.go
@@ -5,6 +5,8 @@ import (
 	"errors"
 	"fmt"
 	"io"
+	"strings"
+	"time"
 
 	tm "github.com/buger/goterm"
 	"github.com/docker/go-units"
@@ -351,8 +353,14 @@ var clientQueryRetrievalAskCmd = &cli.Command{
 		defer closer()
 		ctx := cli2.ReqContext(cctx)
 
+		ctx, cancel := context.WithTimeout(ctx, time.Second*30)
+		defer cancel()
+
 		ask, err := api.ClientMinerQueryOffer(ctx, maddr, dataCid, nil)
 		if err != nil {
+			if strings.Contains(err.Error(), "context by cancel") {
+				return fmt.Errorf("timeout: %v", err)
+			}
 			return err
 		}
 
diff --git a/cmd/droplet-client/storage.go b/cmd/droplet-client/storage.go
index b2ec42fb..47adef46 100644
--- a/cmd/droplet-client/storage.go
+++ b/cmd/droplet-client/storage.go
@@ -265,6 +265,9 @@ var storageAsksQueryCmd = &cli.Command{
 		defer closer()
 		ctx := cli2.ReqContext(cctx)
 
+		ctx, cancel := context.WithTimeout(ctx, time.Second*30)
+		defer cancel()
+
 		var pid peer.ID
 		if pidstr := cctx.String("peerid"); pidstr != "" {
 			p, err := peer.Decode(pidstr)
@@ -287,6 +290,9 @@ var storageAsksQueryCmd = &cli.Command{
 
 		ask, err := api.ClientQueryAsk(ctx, pid, maddr)
 		if err != nil {
+			if strings.Contains(err.Error(), "context by cancel") {
+				return fmt.Errorf("timeout: %v", err)
+			}
 			return err
 		}