Time Out Midlle Warein Gin-Golang-Feedback Required

Hi Go Experts-Could you folks please comment on the implementation of a custom timeout middleware . I am creating a context with a deadline in my middleware and using it in the rest handlers for timeouts(to wrap the query to DB eventually) and it is working as expected. Long story short, I am looking for best practices.I was wondering if any Go/Gin expert can weigh on the pros/cons of the given approach.

TimeOut Code-

func AddTimeOutMiddleware() gin.HandlerFunc {
    return func(ctx *gin.Context) {
        ct, cancel := context.WithDeadline(ctx.Request.Context(), time.Now().Add((3 * time.Microsecond)))
        defer cancel()
        ctx.Set("workContext", ct)
        ctx.Next()
        if ct.Err() != nil {

            ctx.JSON(int(http.DefaultClient.Timeout), "Request Timed Out")
        }
    }
}

Rest Handler Code-

func (athHan *AuthHandler) authenticateUser(ctx *gin.Context) {
    var authDetails Auth
    if err := ctx.ShouldBindJSON(&authDetails); err != nil {
        ctx.JSON(http.StatusBadRequest, gin.H{"error": "Please check the required fields for Authentication"})
        return
    }
    c, _ := ctx.Get("workContext") //Get the handle on context
    chCtx := c.(context.Context)   //
    rst := athHan.athSer.ValidateUserInRepo(chCtx, authDetails.UserName, authDetails.Password)
    if chCtx.Err() == nil {
        if rst {
            ctx.JSON(http.StatusOK, gin.H{"message": "Authentication Successful"})
        } else if chCtx.Err() == nil {

            ctx.JSON(http.StatusOK, gin.H{"message": "Authentication Failure"})
        }

    }

}