           geometry.faceVertexUvs[0].push vertUvs
 
   # CSG Operations
-  subtract: (other) =>
+  subtract: (other) => @options.timer.doTask =>
     [us, them] = [@tree.clone(), other.tree.clone()]
     us
       .invert()

    @started ?= Date.now()
    @tasks ?= 0
    @tasks += 1
    console.log "Starting task, now #{@tasks}"
    do @check

  finish: =>
    throw new Error("Finished more tasks than started") if @tasks? and @tasks < 1
    @tasks -= 1
    elapsed = @check()
    console.log "Finished task, now: #{@tasks} [#{elapsed}/#{@timeout}]"
    if @tasks == 0
      console.log "All tasks finished: #{elapsed}/#{@timeout}ms"
      @started = undefined

  doTask: (block) =>

  value

class Timelimit
  constructor: (@timeout) -> "NOTHING"

  check: =>
    return unless @started?
