diff --git a/www/src/async.js b/www/src/async.js
index <HASH>..<HASH> 100644
--- a/www/src/async.js
+++ b/www/src/async.js
@@ -1,12 +1,22 @@
 ;(function($B) {
 var _b_ = $B.builtins
 var awaitable = $B.make_class("awaitable")
+var coroutine = $B.make_class("coroutine")
+
+coroutine.close = function(self){}
+coroutine.send = function(self){
+    var res = self.$func()
+    if(res.__class__ !== awaitable){
+        throw _b_.StopIteration(res)
+    }
+}
 
 $B.make_async = function(func){
-    return function(){
+    var res = function(){
         return {
-            __repr__: function(){return '<coroutine object>'},
-            __str__: function(){return '<coroutine object>'},
+            __class__: coroutine,
+            $func: func,
+            close: function(){},
             send: function(){
                 var res = func()
                 if(res.__class__ !== awaitable){
@@ -15,6 +25,8 @@ $B.make_async = function(func){
             }
         }
     }
+    res.$infos = func.$infos
+    return res
 }
 
 })(__BRYTHON__)
Make result of async def more compliant