use strict;
use warnings;

package _Buffer;
use IO::File;

sub new { bless [], shift }

sub append { 
	my ($self, $key, $value) = @_;

	my $message = (defined $value ? "$key: $value\n" : (defined $key ? "$key\n" : "\n"));
	push(@{$self}, $message);
	return $self;
}

sub flush {
	my ($self) = @_;

	$self->append;
	STDOUT->printflush(@{$self}); 
	@{$self} = ();
	return $self;
}

package main;

my $buff = _Buffer->new;
$buff->append(event => "message");
$buff->append(data => "fired message event");
$buff->flush;
$buff->append("data: message")->flush;
