-type state() ::
#state{address :: shackle:inet_address(),
backlog :: shackle:table(),
client :: shackle:client(),
id :: id(),
init_options :: init_options(),
name :: name(),
parent :: pid(),
pool_name :: shackle_pool:name(),
port :: shackle:inet_port(),
protocol :: shackle:protocol(),
queue :: #{shackle:external_request_id() => {shackle:cast(), reference()}},
reconnect_state :: undefined | reconnect_state(),
socket :: undefined | shackle:socket(),
socket_options :: shackle:socket_options(),
timer_ref :: undefined | reference()}.