7 has service => (is => 'ro', required => 1);
9 has curried => (is => 'ro', default => sub { [] });
12 my ($self, @curry) = @_;
13 (ref $self)->new(%$self, curried => [ @{$self->curried}, @curry ]);
16 sub send { shift->receive(@_) }
19 my ($self, @message) = @_;
20 $self->service->receive(@{$self->curried}, @message);
24 my ($self, $register, @payload) = @_;
25 my $req = $self->_new_request($register);
26 $self->start_request($req, @payload);
31 my ($self, $req, @payload) = @_;
32 $self->service->start_request($req, @{$self->curried}, @payload);
35 sub request_class { 'Tak::Request' }
38 my ($self, $args) = @_;
39 $self->request_class->new($args);
43 shift->result_of(@_)->get;
47 my ($self, @payload) = @_;
50 my $req = $self->start({
51 on_result => sub { $result = shift },
53 Tak->loop_until($result);
60 service => $self->service->clone_or_self,
61 curried => [ @{$self->curried} ],