diff --git a/cmd/radioctl/radioctl.go b/cmd/radioctl/radioctl.go
index c1303efc3fc37a217d1eb6129babf345b331c06f..57406d2e53481b728f4f510f8b7c9545e8887473 100644
--- a/cmd/radioctl/radioctl.go
+++ b/cmd/radioctl/radioctl.go
@@ -17,6 +17,7 @@ import (
 	pb "git.autistici.org/ale/autoradio/proto"
 	"github.com/google/subcommands"
 	"go.etcd.io/etcd/client/v3"
+	"google.golang.org/grpc"
 )
 
 // Format for output of structured data.
@@ -86,6 +87,7 @@ func getClient() *client.Client {
 	if auClient == nil {
 		cli, err := clientv3.New(clientv3.Config{
 			Endpoints:   strings.Split(*etcdEndpoints, ","),
+			DialOptions: []grpc.DialOption{grpc.WithBlock()},
 			DialTimeout: 5 * time.Second,
 		})
 		if err != nil {
diff --git a/node/node_test.go b/node/node_test.go
index 23ded5a1c3f8ef076557d41db26055c1a09bab72..f2b316d0af837d52c57284aec32e1db821b99f1b 100644
--- a/node/node_test.go
+++ b/node/node_test.go
@@ -17,6 +17,7 @@ import (
 	"go.etcd.io/etcd/client/v3"
 	"go.etcd.io/etcd/client/v3/concurrency"
 	"go.etcd.io/etcd/server/v3/embed"
+	"google.golang.org/grpc"
 	"google.golang.org/protobuf/proto"
 )
 
@@ -42,7 +43,8 @@ func createTestEtcd(t testing.TB) (*clientv3.Client, func()) {
 	<-e.Server.ReadyNotify()
 
 	cli, err := clientv3.New(clientv3.Config{
-		Endpoints: []string{"http://localhost:2379"},
+		Endpoints:   []string{"http://localhost:2379"},
+		DialOptions: []grpc.DialOption{grpc.WithBlock()},
 	})
 	if err != nil {
 		t.Fatalf("clientv3.New: %v", err)