   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 gLong.fromNumber(to_skip)
            # reading from System.in, do it async
            num_skipped = null # will be filled in after the yield
            rs.curr_frame().resume = -> gLong.fromNumber(num_skipped)
            throw new exceptions.YieldIOException (cb) ->
              rs.async_input n_bytes.toNumber(), (bytes) ->
                num_skipped = bytes.length  # we don't care about what the input actually was

              return if bytes_read == 0 then -1 else buf.readUInt8(0)
            # reading from System.in, do it async
            data = null # will be filled in after the yield
            rs.curr_frame().runner = ->
              rs.meta_stack().pop()
              rs.push(if data.length == 0 then -1 else data.charCodeAt(0))
            throw new exceptions.YieldIOException (cb) ->
              rs.async_input 1, (byte) ->
                data = byte
