code: func GetFlash(overseer Overseer, w http.ResponseWriter, r *http.Request, key string) (string, error) {
  	var sess session
  
  	val, err := overseer.Get(w, r)
  	if err != nil {
  		return "", errors.Wrap(err, "unable to get session")
  	}
  
  	err = json.Unmarshal([]byte(val), &sess)
  	if err != nil {
  		return "", errors.Wrap(err, "unable to unmarshal session object")
  	}
  
  	fv, ok := sess.Flash[key]
  	if !ok {
  		return "", errNoMapKey{}
  	}
  
  	var ret string
  	err = json.Unmarshal(*fv, &ret)
  	if err != nil {
  		return ret, errors.Wrap(err, "unable to unmarshal flash value")
  	}
  
  	delete(sess.Flash, key)
  
  	mv, err := json.Marshal(sess)
  	if err != nil {
  		return ret, errors.Wrap(err, "unable to marshal session object")
  	}
  
  	err = overseer.Set(w, r, string(mv))
  	return ret, errors.Wrap(err, "unable to set flash session object")
  }
docs: // GetFlash retrieves a flash message from the session then deletes it