code: func (s *Session) handleGoAway(hdr header) error {
  	code := hdr.Length()
  	switch code {
  	case goAwayNormal:
  		atomic.SwapInt32(&s.remoteGoAway, 1)
  	case goAwayProtoErr:
  		s.logger.Printf("[ERR] yamux: received protocol error go away")
  		return fmt.Errorf("yamux protocol error")
  	case goAwayInternalErr:
  		s.logger.Printf("[ERR] yamux: received internal error go away")
  		return fmt.Errorf("remote yamux internal error")
  	default:
  		s.logger.Printf("[ERR] yamux: received unexpected go away")
  		return fmt.Errorf("unexpected go away received")
  	}
  	return nil
  }
docs: // handleGoAway is invokde for a typeGoAway frame