diff --git a/cmd/cache/main.go b/cmd/cache/main.go
index a53f7ad2e1ff8c68c393e71e95e53cfc9c155c3a..059172e0033b1f7f82317ceef215e958286ce359 100644
--- a/cmd/cache/main.go
+++ b/cmd/cache/main.go
@@ -49,7 +49,10 @@ func main() {
 	redis := redis.New(cfg.Redis.Addr, cfg.Redis.User, cfg.Redis.Pass, cfg.Redis.DB, cfg.Redis.TTL)
 
 	// create event client
-	events := event.New(cfg.Nats.Addr, cfg.Nats.Subject)
+	events, err := event.New(cfg.Nats.Addr, cfg.Nats.Subject)
+	if err != nil {
+		log.Fatalf("failed to create events client: %v", err)
+	}
 	defer events.CLose(context.Background())
 
 	// create services
diff --git a/internal/clients/event/client.go b/internal/clients/event/client.go
index 7baf3c193e09ea17da39107d428982a48d48b1fa..3e97ae0ca92bd36f4b07b32567bc9b8accfea617 100644
--- a/internal/clients/event/client.go
+++ b/internal/clients/event/client.go
@@ -4,7 +4,6 @@ import (
 	"context"
 	"fmt"
 
-	"log"
 	"time"
 
 	"github.com/cloudevents/sdk-go/protocol/nats/v2"
@@ -24,24 +23,24 @@ type Data struct {
 	Key string `json:"key"`
 }
 
-func New(addr, subject string) *Client {
+func New(addr, subject string) (*Client, error) {
 	// create cloudevents nats sender
 	// other protocol implementations: https://github.com/cloudevents/sdk-go/tree/main/protocol
 	sender, err := nats.NewSender(addr, subject, nats.NatsOptions())
 	if err != nil {
-		log.Fatalf("failed to create nats sender, %v", err)
+		return nil, err
 	}
 
 	// create cloudevents client
 	eventsClient, err := cloudevents.NewClient(sender)
 	if err != nil {
-		log.Fatalf("failed to create cloudevents client, %v", err)
+		return nil, err
 	}
 
 	return &Client{
 		sender: sender,
 		events: eventsClient,
-	}
+	}, nil
 }
 
 func (c *Client) Send(ctx context.Context, key string) error {