code: func (c *Conn) returnClient(client *StreamClient) {
  	didSave := false
  	c.clientLock.Lock()
  	if c.clients.Len() < c.pool.MaxStreams && atomic.LoadInt32(&c.shouldClose) == 0 {
  		c.clients.PushFront(client)
  		didSave = true
  
  		// If this is a Yamux stream, shrink the internal buffers so that
  		// we can GC the idle memory
  		if ys, ok := client.stream.(*yamux.Stream); ok {
  			ys.Shrink()
  		}
  	}
  	c.clientLock.Unlock()
  	if !didSave {
  		client.Close()
  	}
  }
docs: // returnStream is used when done with a stream
  // to allow re-use by a future RPC