code: func (c *Channel) DiscardRead() {
  	// Create a new read handler for this channel.
  	// Previous handlers are stopped first.
  	handlerStopped := c.readHandler.New()
  
  	// Start the handler goroutine.
  	go func() {
  		for {
  			select {
  			case <-c.readChan:
  				// Don't do anything.
  				// Just discard the data.
  			case <-c.s.isClosedChan:
  				// Release this goroutine if the socket is closed.
  				return
  			case <-handlerStopped:
  				// Release this goroutine.
  				return
  			}
  		}
  	}()
  }
docs: // DiscardRead ignores and discars the data received from this channel.
  // Call this method during initialization, if you don't read any data from
  // this channel. If received data is not discarded, then the read buffer will block as soon
  // as it is full, which will also block the keep-alive mechanism of the socket. The result
  // would be a closed socket...