             return .Failure(error)
         })
 
-        return dataLoader.toAsync()
+        return dataLoader
     }
 }
 
 private func loadFreshCachedDataWithUpdateDate<DataLoadContext>(
     key: String,
     cachedDataLoader: AsyncStream<(date: NSDate, data: NSData), AnyObject, NSError>,
-    cacheDataLifeTimeInSeconds: NSTimeInterval) -> AsyncTypes<(DataRequestContext<DataLoadContext>, NSData), NSError>.Async {
+    cacheDataLifeTimeInSeconds: NSTimeInterval) -> AsyncStream<(DataRequestContext<DataLoadContext>, NSData), AnyObject, NSError> {
 
-    let validateByDateResultBinder = { (cachedData: (date: NSDate, data: NSData)) -> AsyncTypes<(DataRequestContext<DataLoadContext>, NSData), NSError>.Async in
+    let validateByDateResultBinder = { (cachedData: (date: NSDate, data: NSData)) -> Result<(DataRequestContext<DataLoadContext>, NSData), NSError> in
 
         let newDate = cachedData.0.dateByAddingTimeInterval(cacheDataLifeTimeInSeconds)
         if newDate.compare(NSDate()) == .OrderedDescending {
 
             let cachedResult = (DataRequestContext<DataLoadContext>.CacheUpdateDate(cachedData.0), cachedData.1)
-            return async(value: cachedResult)
+            return .Success(cachedResult)
         }
 
         let error = ErrorNoFreshData(cachedData: cachedData)
-        return async(error: error)
+        return .Failure(error)
     }
 
-    return bindSequenceOfAsyncs(cachedDataLoader.toAsync(), validateByDateResultBinder)
+    return cachedDataLoader.tryMap(validateByDateResultBinder)
 }


import Foundation

import iAsync_async
import iAsync_utils
import iAsync_reactiveKit



        let cacheBinder = { (analyzedData: Result) -> AsyncStream<Result, AnyObject, NSError> in

            let resultLoader = AsyncStream<Result, AnyObject, NSError>.succeeded(with: analyzedData)

            switch response.0 {
            case .Outside:
                let loader = cache.loaderToSetData(response.1, forKey:cacheKey)
                return loader.flatMap(.Latest, transform: { _ in resultLoader })
            case .CacheUpdateDate:
                return resultLoader
            }
        }

