t() :: {socket(), buffer()}
run(charlist(), pos_integer(), t(), module()) :: no_return()
write(t() | socket(), iodata()) :: :ok | {:error, atom()}
write_line(t() | socket(), iodata()) :: :ok | {:error, atom()}