code: func (st *Store) New(r *http.Request, name string) (*sessions.Session, error) {
  	session := sessions.NewSession(st, name)
  	opts := *st.SessionOpts
  	session.Options = &opts
  
  	st.MaxAge(st.SessionOpts.MaxAge)
  
  	// try fetch from db if there is a cookie
  	if cookie, err := r.Cookie(name); err == nil {
  		if err := securecookie.DecodeMulti(name, cookie.Value, &session.ID, st.Codecs...); err != nil {
  			return session, nil
  		}
  		s := &gormSession{tableName: st.opts.TableName}
  		if err := st.db.Where("id = ? AND expires_at > ?", session.ID, gorm.NowFunc()).First(s).Error; err != nil {
  			return session, nil
  		}
  		if err := securecookie.DecodeMulti(session.Name(), s.Data, &session.Values, st.Codecs...); err != nil {
  			return session, nil
  		}
  
  		context.Set(r, contextKey(name), s)
  	}
  
  	return session, nil
  }
docs: // New creates a session with name without adding it to the registry.