func (c Cookie) Reply() ([]byte, error) {
	if c.errorChan != nil {
		return c.replyChecked()
	}
	return c.replyUnchecked()
}
Reply detects whether this is a checked or unchecked cookie, and calls
'replyChecked' or 'replyUnchecked' appropriately.

Unless you're building requests from bytes by hand, this method should
not be used.
package xgb
import (
	"errors"
)
type Cookie struct {
	conn      *Conn
	Sequence  uint16
	replyChan chan []byte
	errorChan chan error
	pingChan  chan bool
}
func (c *Conn) NewCookie(checked, reply bool) *Cookie {
	cookie := &Cookie{
		conn:      c,
		Sequence:  0,  
		replyChan: nil,
		errorChan: nil,
		pingChan:  nil,
	}
	if checked {
		cookie.errorChan = make(chan error, 1)
		if !reply {
			cookie.pingChan = make(chan bool, 1)
		}
	}
	if reply {
		cookie.replyChan = make(chan []byte, 1)
		if !checked {
			cookie.pingChan = make(chan bool, 1)
		}
	}
	return cookie
}