<< ex.what() << endl;
     }
 
-    // Wait up to N seconds for a reply.
-    ReceivedReply = false;
-    (void) TcpSegmentReceiveTimer.expires_at(
-            TimeSent + seconds( RstReplyTimeoutInSec )
-    );
-    TcpSegmentReceiveTimer.async_wait(
-            boost::bind( &TcpPinger::handle_timeout, this )
-    );
+    schedule_timeout_rst_reply();
 }
 
 TcpHeader TcpPinger::create_tcp_header(
     return tcp_header;
 }
 
+void TcpPinger::schedule_timeout_rst_reply()
+{
+    // Wait up to N seconds for a reply.
+    ReceivedReply = false;
+    (void) TcpSegmentReceiveTimer.expires_at(
+            TimeSent + seconds( RstReplyTimeoutInSec )
+    );
+    TcpSegmentReceiveTimer.async_wait(
+            boost::bind( &TcpPinger::handle_timeout, this )
+    );
+}
+
 void TcpPinger::handle_timeout()
 {
     ReceivedReply = false;
 
             const uint16_t destination_port,
             const uint16_t sequence_number
     ) const;
+    void schedule_timeout_rst_reply();
     void handle_timeout();
 
     void start_receive();