diff --git a/quiche/balsa/balsa_headers_sequence.cc b/quiche/balsa/balsa_headers_sequence.cc
index 0ce2879..8e9fcff 100644
--- a/quiche/balsa/balsa_headers_sequence.cc
+++ b/quiche/balsa/balsa_headers_sequence.cc
@@ -1,38 +1,32 @@
 #include "quiche/balsa/balsa_headers_sequence.h"
 
-#include <iterator>
-
 #include "quiche/balsa/balsa_headers.h"
 
 namespace quiche {
 
 void BalsaHeadersSequence::Append(BalsaHeaders headers) {
   sequence_.push_back(std::move(headers));
-
-  if (iter_ == sequence_.end()) {
-    iter_ = std::prev(sequence_.end());
-  }
 }
 
-bool BalsaHeadersSequence::HasNext() const { return iter_ != sequence_.end(); }
+bool BalsaHeadersSequence::HasNext() const { return next_ < sequence_.size(); }
 
-BalsaHeaders* BalsaHeadersSequence::PeekNext() const {
+BalsaHeaders* BalsaHeadersSequence::PeekNext() {
   if (!HasNext()) {
     return nullptr;
   }
-  return &*iter_;
+  return &sequence_[next_];
 }
 
 BalsaHeaders* BalsaHeadersSequence::Next() {
   if (!HasNext()) {
     return nullptr;
   }
-  return &*iter_++;
+  return &sequence_[next_++];
 }
 
 void BalsaHeadersSequence::Clear() {
   sequence_.clear();
-  iter_ = sequence_.end();
+  next_ = 0;
 }
 
 }  // namespace quiche
diff --git a/quiche/balsa/balsa_headers_sequence.h b/quiche/balsa/balsa_headers_sequence.h
index 91d1287..ca521f6 100644
--- a/quiche/balsa/balsa_headers_sequence.h
+++ b/quiche/balsa/balsa_headers_sequence.h
@@ -1,8 +1,9 @@
 #ifndef QUICHE_BALSA_BALSA_HEADERS_SEQUENCE_H_
 #define QUICHE_BALSA_BALSA_HEADERS_SEQUENCE_H_
 
-#include <list>
+#include <cstddef>
 
+#include "absl/container/inlined_vector.h"
 #include "quiche/balsa/balsa_headers.h"
 #include "quiche/common/platform/api/quiche_export.h"
 
@@ -25,14 +26,18 @@
 
   // Similar to `Next()` but does not advance the sequence.
   // TODO(b/68801833): Consider removing after full refactoring is in place.
-  BalsaHeaders* PeekNext() const;
+  BalsaHeaders* PeekNext();
 
   // Clears the sequence. Any previously returned BalsaHeaders become invalid.
   void Clear();
 
  private:
-  std::list<BalsaHeaders> sequence_;
-  std::list<BalsaHeaders>::iterator iter_ = sequence_.end();
+  // Typically at most two interim responses: an optional 100 Continue and an
+  // optional 103 Early Hints.
+  absl::InlinedVector<BalsaHeaders, 2> sequence_;
+
+  // The index of the next entry in the sequence.
+  size_t next_ = 0;
 };
 
 }  // namespace quiche
