diff --git a/src/router/router.go b/src/router/router.go
index <HASH>..<HASH> 100644
--- a/src/router/router.go
+++ b/src/router/router.go
@@ -180,11 +180,6 @@ func (r *Router) Run() {
 	// Schedule flushing active app's app_id
 	r.ScheduleFlushApps()
 
-	l, err := net.Listen("tcp", fmt.Sprintf(":%d", r.config.Port))
-	if err != nil {
-		log.Fatalf("net.Listen: %s", err)
-	}
-
 	// Wait for one start message send interval, such that the router's registry
 	// can be populated before serving requests.
 	if r.config.PublishStartMessageInterval != 0 {
@@ -192,6 +187,11 @@ func (r *Router) Run() {
 		time.Sleep(r.config.PublishStartMessageInterval)
 	}
 
+	l, err := net.Listen("tcp", fmt.Sprintf(":%d", r.config.Port))
+	if err != nil {
+		log.Fatalf("net.Listen: %s", err)
+	}
+
 	util.WritePidFile(r.config.Pidfile)
 
 	log.Infof("Listening on %s", l.Addr())
Start listening after giving the registry time to fill up