code: func (ln *Listener) ReceiveTimeout(timeout time.Duration) (channel, payload string, err error) {
  	cn, err := ln.conn()
  	if err != nil {
  		return "", "", err
  	}
  
  	err = cn.WithReader(timeout, func(rd *internal.BufReader) error {
  		channel, payload, err = readNotification(rd)
  		return err
  	})
  	if err != nil {
  		ln.releaseConn(cn, err, timeout > 0)
  		return "", "", err
  	}
  
  	return channel, payload, nil
  }
docs: // ReceiveTimeout waits for a notification until timeout is reached.
  // This is low-level API and in most cases Channel should be used instead.