diff --git a/common/quiche_data_reader.cc b/common/quiche_data_reader.cc
index 9842add..3854651 100644
--- a/common/quiche_data_reader.cc
+++ b/common/quiche_data_reader.cc
@@ -120,6 +120,10 @@
   return quiche::QuicheStringPiece(data_, len_);
 }
 
+quiche::QuicheStringPiece QuicheDataReader::PreviouslyReadPayload() const {
+  return quiche::QuicheStringPiece(data_, pos_);
+}
+
 bool QuicheDataReader::ReadBytes(void* result, size_t size) {
   // Make sure that we have enough data to read.
   if (!CanRead(size)) {
diff --git a/common/quiche_data_reader.h b/common/quiche_data_reader.h
index 45c0961..c837172 100644
--- a/common/quiche_data_reader.h
+++ b/common/quiche_data_reader.h
@@ -101,6 +101,15 @@
   // DOES NOT forward the internal iterator.
   quiche::QuicheStringPiece FullPayload() const;
 
+  // Returns the part of the payload that has been already read as a
+  // quiche::QuicheStringPiece.
+  //
+  // NOTE: Does not copy but rather references strings in the underlying buffer.
+  // This should be kept in mind when handling memory management!
+  //
+  // DOES NOT forward the internal iterator.
+  quiche::QuicheStringPiece PreviouslyReadPayload() const;
+
   // Reads a given number of bytes into the given buffer. The buffer
   // must be of adequate size.
   // Forwards the internal iterator on success.
diff --git a/common/quiche_data_writer_test.cc b/common/quiche_data_writer_test.cc
index 78f8abf..343e6ea 100644
--- a/common/quiche_data_writer_test.cc
+++ b/common/quiche_data_writer_test.cc
@@ -386,6 +386,9 @@
   char expected_first_read[4] = {1, 2, 3, 4};
   char expected_remaining[12] = {5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
   QuicheDataReader reader(buffer, sizeof(buffer));
+  quiche::QuicheStringPiece previously_read_payload1 =
+      reader.PreviouslyReadPayload();
+  EXPECT_TRUE(previously_read_payload1.empty());
   char first_read_buffer[4] = {};
   EXPECT_TRUE(reader.ReadBytes(first_read_buffer, sizeof(first_read_buffer)));
   test::CompareCharArraysWithHexError(
@@ -401,6 +404,12 @@
   test::CompareCharArraysWithHexError("full_payload", full_payload.data(),
                                       full_payload.length(), buffer,
                                       sizeof(buffer));
+  quiche::QuicheStringPiece previously_read_payload2 =
+      reader.PreviouslyReadPayload();
+  test::CompareCharArraysWithHexError(
+      "previously_read_payload2", previously_read_payload2.data(),
+      previously_read_payload2.length(), first_read_buffer,
+      sizeof(first_read_buffer));
   quiche::QuicheStringPiece read_remaining_payload =
       reader.ReadRemainingPayload();
   test::CompareCharArraysWithHexError(
@@ -412,6 +421,11 @@
   test::CompareCharArraysWithHexError("full_payload2", full_payload2.data(),
                                       full_payload2.length(), buffer,
                                       sizeof(buffer));
+  quiche::QuicheStringPiece previously_read_payload3 =
+      reader.PreviouslyReadPayload();
+  test::CompareCharArraysWithHexError(
+      "previously_read_payload3", previously_read_payload3.data(),
+      previously_read_payload3.length(), buffer, sizeof(buffer));
 }
 
 }  // namespace
