diff --git a/app/models/commit_status.rb b/app/models/commit_status.rb
index ad4e1c252310491888eb2345a681a70300a57dc7..438f807b118e186a95d1f1daa70c0d8d49ba4b2f 100644
--- a/app/models/commit_status.rb
+++ b/app/models/commit_status.rb
@@ -69,22 +69,15 @@ class CommitStatus < ActiveRecord::Base
       commit_status.update_attributes finished_at: Time.now
     end
 
-    # We use around_transition to process pipeline on next stages as soon as possible, before the `after_*` is executed
-    around_transition any => [:success, :failed, :canceled] do |commit_status, block|
-      block.call
+    after_transition do |commit_status, transition|
+      commit_status.pipeline.try(:build_updated) unless transition.loopback?
+    end
 
+    after_transition any => [:success, :failed, :canceled] do |commit_status|
       commit_status.pipeline.try(:process!)
       true
     end
 
-    after_transition do |commit_status, transition|
-      pipeline = commit_status.pipeline
-      if !transition.loopback? && pipeline
-        pipeline.reload
-        pipeline.build_updated
-      end
-    end
-
     after_transition [:created, :pending, :running] => :success do |commit_status|
       MergeRequests::MergeWhenBuildSucceedsService.new(commit_status.pipeline.project, nil).trigger(commit_status)
     end