code: func (c *Connection) NotifyClose(receiver chan *Error) chan *Error {
  	c.m.Lock()
  	defer c.m.Unlock()
  
  	if c.noNotify {
  		close(receiver)
  	} else {
  		c.closes = append(c.closes, receiver)
  	}
  
  	return receiver
  }
docs: /*
  NotifyClose registers a listener for close events either initiated by an error
  accompanying a connection.close method or by a normal shutdown.
  
  On normal shutdowns, the chan will be closed.
  
  To reconnect after a transport or protocol error, register a listener here and
  re-run your setup process.
  
  */