1) Si la propuesta lo incluye, si.
2)
data, err = client.receive()
Realiza una lectura en un socket conectado.
Devuelve la información disponible
en el stream en data. Si expira el timeout sin obtener datos nuevos devuelve
’ ', ’timeout’ (ver función client.settimeout()). Si la conexión esta cerrada
devuelve nil, ’closed’.
Por lo tanto err lo podrías usar para ver si expiró el timeout (en este caso data sería '' y err ’timeout’) o para controlar si la conexión está cerrada (en este caso data tendría nil y err ’closed’).
Saludos.