 
   check: =>
     return unless @started?
-    return unless @timeout?
     returning (elapsed = (Date.now() - @started)), =>
-      if elapsed >= @timeout
+      if elapsed >= @timeout ? Infinity
         throw new Error("Timeout reached: #{elapsed}/#{@timeout}")
 
   start: =>

    @matrix ?= new THREE.Matrix4()

    # Start a timer if one wasn't passed
    @options.timer ?= new Timelimit(@options.timeout)

    @tree   = @toTree treeIsh


    throw new Error("Finished more tasks than started") if @tasks? and @tasks < 1
    @tasks -= 1
    elapsed = @check()
    @done ?= 0
    @done += 1
    if @tasks == 0
      console.log "All #{@done} tasks finished. #{elapsed}/#{@timeout ? 'Inf'}ms"
      @started = @done = undefined

  doTask: (block) =>
    do @start
