     }(ec)
 }
 
+/**
+
+    Reduces the elements of sequence of futures using the specified reducing function `combine`
+
+    :param: fxs Sequence of Futures
+    :param: initial Initial value that will be passed as first argument in `combine` function
+    :param: combine reducing function
+    :param: ec Execution context of `combine`
+
+    :returns: Future which will contain result of reducing sequence of futures
+
+*/
 public func reduce<S: SequenceType, T where S.Generator.Element: FutureType>(fxs: S, initial: T, combine: (T, S.Generator.Element.SuccessType) -> T)(_ ec: ExecutionContextType) -> Future<T, S.Generator.Element.ErrorType> {
     return reduce(fxs, Future(Result(initial))) { acc, futureValue in
         flatMap(futureValue) { value in

    return p.future
}

public func recoverWith<F: FutureType>(fx: F, r: F.ErrorType -> F)(_ ec: ExecutionContextType) -> Future<F.SuccessType, F.ErrorType> {
    let p = Promise<F.SuccessType, F.ErrorType>()
    fx.onComplete(ec) {

    return p.future
}

/**

    Transforms Future<T, E> into Deferred<Result<T, E>>

    :param: fx Future

    :returns: Deferred

*/
public func toDeferred<F: FutureType>(fx: F) -> Deferred<Result<F.SuccessType, F.ErrorType>> {
    let p = PurePromise<Result<F.SuccessType, F.ErrorType>>()
    fx.onComplete(ExecutionContext.DefaultPureOperationContext) {
