   if node?
     # For the browser implementation -- the DOM doesn't get repainted
     # unless we give the event loop a chance to spin.
-    rs.curr_frame().resume = -> # NOP
+    rs.curr_frame().runner = -> rs.meta_stack().pop()
     throw new exceptions.YieldIOException (cb) -> setTimeout(cb, 0)
 
 

              return if bytes_read == 0 and n_bytes isnt 0 then -1 else bytes_read
            # reading from System.in, do it async
            result = null # will be filled in after the yield
            rs.curr_frame().resume = -> result
            throw new exceptions.YieldIOException (cb) ->
              rs.async_input n_bytes, (bytes) ->
                byte_arr.array[offset+idx] = b for b, idx in bytes

        o 'gc()V', (rs) ->
            # No universal way of forcing browser to GC, so we yield in hopes
            # that the browser will use it as an opportunity to GC.
            rs.curr_frame().runner = -> rs.meta_stack().pop()
            throw new exceptions.YieldIOException (cb) -> setTimeout(cb, 0)
      ]
      Shutdown: [
