diff --git a/http2/server.go b/http2/server.go
index d2e52f3..967c9e7 100644
--- a/http2/server.go
+++ b/http2/server.go
@@ -2500,6 +2500,10 @@
 		rws.writeHeader(200)
 	}
 
+	if rws.handlerDone {
+		rws.promoteUndeclaredTrailers()
+	}
+
 	isHeadResp := rws.req.Method == "HEAD"
 	if !rws.sentHeader {
 		rws.sentHeader = true
@@ -2571,10 +2575,6 @@
 		return 0, nil
 	}
 
-	if rws.handlerDone {
-		rws.promoteUndeclaredTrailers()
-	}
-
 	// only send trailers if they have actually been defined by the
 	// server handler.
 	hasNonemptyTrailers := rws.hasNonemptyTrailers()
diff --git a/http2/server_test.go b/http2/server_test.go
index b77372c..654d53f 100644
--- a/http2/server_test.go
+++ b/http2/server_test.go
@@ -3055,6 +3055,30 @@
 	})
 }
 
+func TestServerWritesUndeclaredTrailers(t *testing.T) {
+	const trailer = "Trailer-Header"
+	const value = "hi1"
+	st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) {
+		w.Header().Set(http.TrailerPrefix+trailer, value)
+	}, optOnlyServer)
+	defer st.Close()
+
+	tr := &Transport{TLSClientConfig: tlsConfigInsecure}
+	defer tr.CloseIdleConnections()
+
+	cl := &http.Client{Transport: tr}
+	resp, err := cl.Get(st.ts.URL)
+	if err != nil {
+		t.Fatal(err)
+	}
+	io.Copy(io.Discard, resp.Body)
+	resp.Body.Close()
+
+	if got, want := resp.Trailer.Get(trailer), value; got != want {
+		t.Errorf("trailer %v = %q, want %q", trailer, got, want)
+	}
+}
+
 // validate transmitted header field names & values
 // golang.org/issue/14048
 func TestServerDoesntWriteInvalidHeaders(t *testing.T) {
