 
 extension Sequence where Iterator.Element : Futurable {
 
-    public func fold<R>(context: ExecutionContext = QueueContext.futuresDefault, initial: R,  combine: (R, Iterator.Element.T) throws -> R) -> Future<R> {
+    public func fold<R>(context: ExecutionContext = QueueContext.futuresDefault, initial: R,  combine: @escaping (R, Iterator.Element.T) throws -> R) -> Future<R> {
         return reduce(Future<R>(value: initial)) { accumulator, element in
             accumulator.flatMap(context: MaxStackDepthContext()) { accumulatorValue in
                 return element.map(context: context) { elementValue in


    // MARK: Callbacks

    public func onComplete(context: ExecutionContext = QueueContext.futuresDefault, cancelToken: CancelToken = CancelToken(), complete: (Try<T>) -> Void) {
        let futureComplete : InFuture = { future in
            future.onComplete(context: context, complete: complete)
        }


    // MARK: Future Combinators

    public func flatMap<M>(context: ExecutionContext = QueueContext.futuresDefault, cancelToken: CancelToken = CancelToken(), mapping: @escaping (T) throws  -> Future<M>) -> FutureStream<M> {
        let stream = FutureStream<M>(capacity: capacity)
        onComplete(context: context, cancelToken: cancelToken) { result in
            stream.completeWith(context: context, future: result.map(mapping))
