has on_result => (is => 'ro', required => 1);
+has is_done => (is => 'rw', default => sub { 0 });
+
sub progress {
my ($self, @report) = @_;
if (my $cb = $self->on_progress) {
sub result {
my ($self, $type, @data) = @_;
+ $self->is_done(1);
$self->on_result->(Tak::Result->new(type => $type, data => \@data));
}