diff --git a/core/blockchain_bor_test.go b/core/blockchain_bor_test.go
index 9ad2ff4b8484d738769bbd8165a7ad6411890377..86456d7d075ed7445e62df99c3c2cf1c0e6a0fbd 100644
--- a/core/blockchain_bor_test.go
+++ b/core/blockchain_bor_test.go
@@ -1,7 +1,6 @@
 package core
 
 import (
-	"fmt"
 	"math/big"
 	"testing"
 	"time"
@@ -49,42 +48,11 @@ func TestChain2HeadEvent(t *testing.T) {
 		}
 		gen.AddTx(tx)
 	})
+
 	if _, err := blockchain.InsertChain(replacementBlocks); err != nil {
 		t.Fatalf("failed to insert chain: %v", err)
 	}
 
-	readEvent := func() *Chain2HeadEvent {
-		select {
-		case evnt := <-chain2HeadCh:
-			return &evnt
-		case <-time.After(2 * time.Second):
-			t.Fatal("timeout")
-		}
-		return nil
-	}
-
-	// head event
-	evnt := readEvent()
-	fmt.Println(evnt.Type)
-
-	// fork event
-	evnt = readEvent()
-	fmt.Println(evnt.Type)
-
-	// fork event
-	evnt = readEvent()
-	fmt.Println(evnt.Type)
-
-	// reorg event
-	evnt = readEvent()
-	fmt.Println(evnt.Type)
-
-	// head event
-	evnt = readEvent()
-	fmt.Println(evnt.Type)
-
-	return
-
 	// first two block of the secondary chain are for a brief moment considered
 	// side chains because up to that point the first one is considered the
 	// heavier chain.
@@ -106,23 +74,22 @@ func TestChain2HeadEvent(t *testing.T) {
 	}
 
 	expectedHeadHashes := map[common.Hash]bool{
+		chain[2].Hash():             true,
 		replacementBlocks[3].Hash(): true,
 	}
+
 	i := 0
 
-	//number of totalEvents are 4 : when the second chain is generated, there are 2 fork events,
-	//then reorg happens and triggers 1 event, then last head block of Replacement chain triggers 1 event
-	totalEvents := 4
+	tot := 0
 
-	const timeoutDura = 10 * time.Second
-	timeout := time.NewTimer(timeoutDura)
-done:
-	for {
+	readEvent := func() *Chain2HeadEvent {
 		select {
 		case ev := <-chain2HeadCh:
+			i++
 			if ev.Type == Chain2HeadReorgEvent {
 				//Reorg Event Sends Chain of Added Blocks in NewChain. So need to check all of them in reorgHashes
 				for j := 0; j < len(ev.OldChain); j++ {
+					tot++
 					block := ev.OldChain[j]
 					if _, ok := expectedReplacedHashes[block.Hash()]; !ok {
 						t.Errorf("%d: didn't expect %x to be in side chain", i, block.Hash())
@@ -131,6 +98,7 @@ done:
 				}
 				//Reorg Event also Sends Chain of Removed Blocks in NewChain. So need to check all of them in replacedHashes
 				for j := 0; j < len(ev.OldChain); j++ {
+					tot++
 					block := ev.NewChain[j]
 					if _, ok := expectedReorgHashes[block.Hash()]; !ok {
 						t.Errorf("%d: didn't expect %x to be in side chain", i, block.Hash())
@@ -141,6 +109,7 @@ done:
 			}
 
 			if ev.Type == Chain2HeadForkEvent {
+				tot++
 				block := ev.NewChain[0]
 				if _, ok := expectedForkHashes[block.Hash()]; !ok {
 					t.Errorf("%d: didn't expect %x to be in fork chain", i, block.Hash())
@@ -148,31 +117,32 @@ done:
 			}
 
 			if ev.Type == Chain2HeadCanonicalEvent {
+				tot++
 				block := ev.NewChain[0]
 				if _, ok := expectedHeadHashes[block.Hash()]; !ok {
 					t.Errorf("%d: didn't expect %x to be in head chain", i, block.Hash())
 				}
 			}
 
-			i++
+			return nil
+		case <-time.After(2 * time.Second):
+			t.Fatal("timeout")
+		}
+		return nil
+	}
 
-			if i == (totalEvents) {
-				timeout.Stop()
+	// head event
+	readEvent()
 
-				break done
-			}
-			timeout.Reset(timeoutDura)
+	// fork event
+	readEvent()
 
-		case <-timeout.C:
-			t.Fatal("Timeout. Possibly not all blocks were triggered for sideevent")
-		}
-	}
+	// fork event
+	readEvent()
 
-	// make sure no more events are fired
-	select {
-	case e := <-chain2HeadCh:
-		t.Errorf("unexpected event fired: %v", e)
-	case <-time.After(250 * time.Millisecond):
-	}
+	// reorg event
+	readEvent()
 
+	// head event
+	readEvent()
 }