         }
 
         // See Async.async() for comments
-        return AsyncBlock<Out, O>(dispatchWorkItem, input: self.output, output: reference)
+        return AsyncBlock<Out, O>(dispatchWorkItem, input: self.output_, output: reference)
     }
 }
 

    private let block: DispatchWorkItem

    private let input: Reference<In>?
    private let output: Reference<Out>

    /**
     Private init that takes a `@convention(block) () -> Swift.Void`

    private func chain<O>(after seconds: Double? = nil, block chainingBlock: (Out) -> O, queue: GCD) -> AsyncBlock<Out, O> {
        let reference = Reference<O>()
        let dispatchWorkItem = DispatchWorkItem(block: {
            reference.value = chainingBlock(self.output_.value!)
        })

        let queue = queue.queue
