diff --git a/backend/main.go b/backend/main.go
index ff30068746343186de88a7890ddc516b4d3411cf..8a2d36f939208136a7b5b3a7778310c95e0080bb 100644
--- a/backend/main.go
+++ b/backend/main.go
@@ -57,13 +57,16 @@ func main() {
 		if err := metrics.ListenAndServe(); err != nil && err != http.ErrServerClosed {
 			log.Printf("error in metrics server: %s", err.Error())
 		}
+		log.Printf("metrics shut down, shutting down asynq as well")
 		srv.Shutdown()
 	}()
-
-	if err := srv.Run(mux); err != nil {
-		log.Printf("error in asynq server: %s", err.Error())
-	}
-	if err := metrics.Shutdown(context.Background()); err != nil {
-		log.Printf("error shutting down metrics server: %s", err.Error())
-	}
+	go func() {
+		if err := srv.Run(mux); err != nil {
+			log.Printf("error in asynq server: %s", err.Error())
+		}
+		log.Printf("asynq shut down, shutting down metrics as well")
+		if err := metrics.Shutdown(context.Background()); err != nil {
+			log.Printf("error shutting down metrics server: %s", err.Error())
+		}
+	}()
 }