diff --git a/httpbin/handlers.go b/httpbin/handlers.go
index 645f1f45c2b10850bbf4e63eb2ec6f794180e3ba..cc27870acac422c4f0700b5dd44e07934a85bcd6 100644
--- a/httpbin/handlers.go
+++ b/httpbin/handlers.go
@@ -467,7 +467,11 @@ func (h *HTTPBin) Delay(w http.ResponseWriter, r *http.Request) {
 		return
 	}
 
-	<-time.After(delay)
+	select {
+	case <-r.Context().Done():
+		return
+	case <-time.After(delay):
+	}
 	h.RequestWithBody(w, r)
 }
 
@@ -526,7 +530,11 @@ func (h *HTTPBin) Drip(w http.ResponseWriter, r *http.Request) {
 
 	pause := duration / time.Duration(numbytes)
 
-	<-time.After(delay)
+	select {
+	case <-r.Context().Done():
+		return
+	case <-time.After(delay):
+	}
 
 	w.WriteHeader(code)
 	w.Header().Set("Content-Type", "application/octet-stream")
@@ -535,7 +543,12 @@ func (h *HTTPBin) Drip(w http.ResponseWriter, r *http.Request) {
 	for i := int64(0); i < numbytes; i++ {
 		w.Write([]byte("*"))
 		f.Flush()
-		<-time.After(pause)
+
+		select {
+		case <-r.Context().Done():
+			return
+		case <-time.After(pause):
+		}
 	}
 }