           when '*'
             cont(lhs * rhs)
           when '/'
-            cont(lhs / rhs) # TODO handle divzero
+            cont(lhs / rhs)
           when '&'
             cont(lhs & rhs)
           when '|'

            if not lhs then await interp node.right, env, defer(rhs), errCont
            cont(lhs || rhs)
          else
            throw "Unrecognized operator #{node.operator}"
      when 'BinaryExpression'
        await interp node.left, env, defer(lhs), errCont
        await interp node.right, env, defer(rhs), errCont

          env.strict ||= i == 0 and stmt.expression?.value is 'use strict'
          await interp stmt, env, defer(v), errCont
          return cont(v) if node.type is 'Program' and i == node.body.length - 1 # for eval's return value
        setTimeout cont(), 0 # avoid stack overflow
      when 'FunctionDeclaration', 'FunctionExpression'
        node.env = env.copy()
        fn = (new Function "return function #{node.id?.name ? ''}() {}")()
