package core import ( "context" "net/http" "time" ) type contexter interface{ Ctx() context.Context } type reqCtx struct{ c context.Context } func (r reqCtx) Ctx() context.Context { return r.c } func contextWithTimeout(r *http.Request, d time.Duration) (contexter, context.CancelFunc) { c, cancel := context.WithTimeout(r.Context(), d) return reqCtx{c}, cancel }