File tree 1 file changed +16
-7
lines changed
1 file changed +16
-7
lines changed Original file line number Diff line number Diff line change @@ -171,17 +171,26 @@ func (h *httpHandler) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
171
171
172
172
// writer is used to write the response
173
173
var writer func (rw http.ResponseWriter )
174
- if h .disruption .ErrorRate > 0 && rand .Float32 () <= h .disruption .ErrorRate {
175
- h .metrics .Inc (protocol .MetricRequestsDisrupted )
176
- writer = h .injectError
177
- } else {
178
- //nolint:contextcheck // Unclear which context the linter requires us to propagate here.
179
- writer = h .forward (req )
180
- }
174
+
175
+ // forward request
176
+ done := make (chan struct {})
177
+ go func () {
178
+ if h .disruption .ErrorRate > 0 && rand .Float32 () <= h .disruption .ErrorRate {
179
+ h .metrics .Inc (protocol .MetricRequestsDisrupted )
180
+ writer = h .injectError
181
+ } else {
182
+ writer = h .forward (req )
183
+ }
184
+
185
+ done <- struct {}{}
186
+ }()
181
187
182
188
// wait for delay
183
189
<- time .After (h .delay ())
184
190
191
+ // wait for upstream request
192
+ <- done
193
+
185
194
// return response
186
195
writer (rw )
187
196
}
You can’t perform that action at this time.
0 commit comments