stream_util.go
func FullClose(s Stream) error {
	if err := s.Close(); err != nil {
		s.Reset()
		return err
	}
	return AwaitEOF(s)
}
func FullClose(s Stream) error {
	if err := s.Close(); err != nil {
		s.Reset()
		return err
	}
	return AwaitEOF(s)
}
// FullClose closes the stream and waits to read an EOF from the other side.
//
// * If it reads any data *before* the EOF, it resets the stream.
// * If it doesn't read an EOF within EOFTimeout, it resets the stream.
//
// You'll likely want to invoke this as `go FullClose(stream)` to close the
// stream in the background.