This subclass of IO::Async::Protocol::LineStream implements an established IRC connection that has already completed its inital login sequence and is ready to send and receive IRC messages.
It handles base message sending and receiving,
and implements ping timers.

Objects of this type would not normally be constructed directly.
For IRC clients,
see Net::Async::IRC which is a subclass of it.
All the events,
parameters,
and methods documented below are relevant there.

Invoked on receipt of an invalid IRC message if parsing fails.
$err is the error message text.
If left unhandled,
any parse error will result in the connection being immediataely closed,
followed by the exception being re-thrown.

Returns a new instance of a Net::Async::IRC::Protocol object.
This object represents a IRC connection to a peer.
As it is a subclass of IO::Async::Protocol::LineStream its constructor takes any arguments for that class,
in addition to the parameters named below.

A message with a command of COMMAND will try handlers in following places:

A CODE ref in a parameter called on_message_COMMAND

$on_message_COMMAND->( $irc, $message, \%hints )

A method called on_message_COMMAND

$irc->on_message_COMMAND( $message, \%hints )

A CODE ref in a parameter called on_message

$on_message->( $irc, 'COMMAND', $message, \%hints )

A method called on_message

$irc->on_message( 'COMMAND', $message, \%hints )

Certain commands are handled internally by methods on the base Net::Async::IRC::Protocol class itself. These may cause other hints hash keys to be created, or to invoke other handler methods. These are documented below.