code: func (c *Connection) Close() error {
  	if c.IsClosed() {
  		return ErrClosed
  	}
  
  	defer c.shutdown(nil)
  	return c.call(
  		&connectionClose{
  			ReplyCode: replySuccess,
  			ReplyText: "kthxbai",
  		},
  		&connectionCloseOk{},
  	)
  }
docs: /*
  Close requests and waits for the response to close the AMQP connection.
  
  It's advisable to use this message when publishing to ensure all kernel buffers
  have been flushed on the server and client before exiting.
  
  An error indicates that server may not have received this request to close but
  the connection should be treated as closed regardless.
  
  After returning from this call, all resources associated with this connection,
  including the underlying io, Channels, Notify listeners and Channel consumers
  will also be closed.
  */