diff --git a/webrtc/audio/audio_send_stream.cc b/webrtc/audio/audio_send_stream.cc
index f8ee3ab..36ad63d 100644
--- a/webrtc/audio/audio_send_stream.cc
+++ b/webrtc/audio/audio_send_stream.cc
@@ -171,7 +171,7 @@
   // Transport sequence number
   if (first_time ||
       new_ids.transport_sequence_number != old_ids.transport_sequence_number) {
-    if (old_ids.transport_sequence_number) {
+    if (!first_time) {
       channel_proxy->ResetSenderCongestionControlObjects();
       stream->bandwidth_observer_.reset();
     }
diff --git a/webrtc/audio/audio_send_stream_unittest.cc b/webrtc/audio/audio_send_stream_unittest.cc
index efc18d1..b685cfb 100644
--- a/webrtc/audio/audio_send_stream_unittest.cc
+++ b/webrtc/audio/audio_send_stream_unittest.cc
@@ -174,10 +174,7 @@
     stream_config_.rtp.extensions.push_back(
         RtpExtension(RtpExtension::kAudioLevelUri, kAudioLevelId));
     if (audio_bwe_enabled) {
-      stream_config_.rtp.extensions.push_back(
-          RtpExtension(RtpExtension::kTransportSequenceNumberUri,
-                       kTransportSequenceNumberId));
-      stream_config_.send_codec_spec->transport_cc_enabled = true;
+      AddBweToConfig(&stream_config_);
     }
     stream_config_.encoder_factory = SetupEncoderFactoryMock();
     stream_config_.min_bitrate_bps = 10000;
@@ -197,6 +194,13 @@
   RtcEventLog* event_log() { return &event_log_; }
   MockVoiceEngine* voice_engine() { return &voice_engine_; }
 
+  static void AddBweToConfig(AudioSendStream::Config* config) {
+    config->rtp.extensions.push_back(
+        RtpExtension(RtpExtension::kTransportSequenceNumberUri,
+                     kTransportSequenceNumberId));
+    config->send_codec_spec->transport_cc_enabled = true;
+  }
+
   void SetupDefaultChannelProxy(bool audio_bwe_enabled) {
     using testing::StrEq;
     channel_proxy_ = new testing::StrictMock<MockVoEChannelProxy>();
@@ -541,5 +545,28 @@
   send_stream.Reconfigure(stream_config);
 }
 
+TEST(AudioSendStreamTest, ReconfigureTransportCcResetsFirst) {
+  ConfigHelper helper(false, true);
+  internal::AudioSendStream send_stream(
+      helper.config(), helper.audio_state(), helper.worker_queue(),
+      helper.transport(), helper.bitrate_allocator(), helper.event_log(),
+      helper.rtcp_rtt_stats(), rtc::Optional<RtpState>());
+  auto new_config = helper.config();
+  ConfigHelper::AddBweToConfig(&new_config);
+  EXPECT_CALL(*helper.channel_proxy(),
+              EnableSendTransportSequenceNumber(kTransportSequenceNumberId))
+      .Times(1);
+  {
+    ::testing::InSequence seq;
+    EXPECT_CALL(*helper.channel_proxy(), ResetSenderCongestionControlObjects())
+        .Times(1);
+    EXPECT_CALL(*helper.channel_proxy(), RegisterSenderCongestionControlObjects(
+        helper.transport(), Ne(nullptr)))
+        .Times(1);
+  }
+  send_stream.Reconfigure(new_config);
+}
+
+
 }  // namespace test
 }  // namespace webrtc
