       value
     else
       @deps.push key
+      @blank()
+  
+  # Return an instance of the default, not-yet-instantiated object. If
+  # `@wrapper` was called, then it's an instance of this clas with `undefined`
+  # as its value. Otherwise, an unwrapped `undefined` is returned.
+  blank: ->
+    if @wrapper_class?
+      new @wrapper_class(undefined)
+    else
       undefined
   
   # Make sure the given key is being requested in a totally legal and consistent way.

  emit: (args..., value) ->
    @emitted = true
    key = args.join consts.arg_sep
    @db.set key, JSON.stringify(value)
    @db.publish @resp_channel, key

  # If we've seen this `@for_reals` before, then blow right past it.

  # The dispatcher said to resume, so go look for the missing values again.
  resume: ->
    @get_deps true
  
  # Set the default wrapper class, which is overridden by `as: `
  wrapper: (klass) ->
    @wrapper_class = klass


# Extend the blessed methods with the given ones, so that
# worker contexts can use them.
Worker.mixin = (mixins) ->
  _.extend (Worker.mixins ?= {}), mixins
  _.extend Worker.prototype, mixins

module.exports =
  
