factor handle code out so Object::Remote->new returns a proxy
[scpubgit/Object-Remote.git] / lib / Object / Remote / Connection.pm
index 3b66cd5..eb3c6cb 100644 (file)
@@ -2,6 +2,7 @@ package Object::Remote::Connection;
 
 use Object::Remote::Future;
 use Object::Remote::Null;
+use Object::Remote::Handle;
 use Object::Remote;
 use IO::Handle;
 use Module::Runtime qw(use_module);
@@ -56,7 +57,7 @@ sub _build__json {
       return bless({}, 'Object::Remote::Null') if $id eq 'NULL';
       (
         $remotes->{$id}
-        or Object::Remote->new(connection => $self, id => $id)
+        or Object::Remote::Handle->new(connection => $self, id => $id)
       )->proxy;
     }
   );
@@ -204,6 +205,7 @@ sub _invoke {
   if ($method =~ /^start::/) {
     my $f = $local->$method(@args);
     $f->on_done(sub { undef($f); $future->done(@_) });
+    return unless $f;
     $f->on_fail(sub { undef($f); $future->fail(@_) });
     return;
   }