diff --git a/lib/GeneratorResolver.php b/lib/GeneratorResolver.php
index <HASH>..<HASH> 100644
--- a/lib/GeneratorResolver.php
+++ b/lib/GeneratorResolver.php
@@ -200,9 +200,9 @@ trait GeneratorResolver {
             if (is_callable($current)) {
                 $promise = new Success(function() use ($current) {
                     $result = call_user_func_array($current, func_get_args());
-                    if ($result instanceof \Generator) {
-                        $this->resolveGenerator($result);
-                    }
+                    return $result instanceof \Generator
+                        ? $this->resolveGenerator($result)
+                        : $result;
                 });
             } else {
                 $promise = new Failure(new \DomainException(
diff --git a/test/GeneratorResolverTest.php b/test/GeneratorResolverTest.php
index <HASH>..<HASH> 100644
--- a/test/GeneratorResolverTest.php
+++ b/test/GeneratorResolverTest.php
@@ -298,7 +298,8 @@ class GeneratorResolverTest extends \PHPUnit_Framework_TestCase {
             // Because this Generator function is bound to the reactor it should be
             // automatically resolved and our repeating watcher should be cancelled
             // allowing the reactor to stop running.
-            $boundFunc();
+            $result = $boundFunc();
+            $this->assertInstanceOf('Amp\\Promise', $result);
         });
     }
 }
Return promise/result from bound functions