         onFilled()
     }
 
-    private func upon(options inFlags: dispatch_block_flags_t, function: Value -> Void) -> dispatch_block_t {
+    private func upon(options inFlags: dispatch_block_flags_t, body: Value -> Void) -> dispatch_block_t {
         let flags = dispatch_block_flags_t(inFlags.rawValue | DISPATCH_BLOCK_ASSIGN_CURRENT.rawValue)
         let block = dispatch_block_create(flags) {
             let storagePtr = dispatch_get_specific(&DeferredStorageKey)

            let storage = storageRef.takeUnretainedValue()

            let value = storage.value
            function(value)
        }
        dispatch_block_notify(onFilled, accessQueue, block)
        return block

    main queue immediately. The function is always executed asynchronously, even
    if the Deferred is filled from the main queue.
    
    :param: body A function that uses the determined value.
    */
    public func uponMainQueue(body: Value -> ()) {
        upon(dispatch_get_main_queue(), body: body)
    }

    /**
