     private var onSuccess: ((Data) -> Void)?
     private var onTypedSucess: ((Any) -> Void)?
     
+    /// Count of all stared requests
     public var requestCount: Int = 0
+    /// Last executed request
     public var lastReuqest: NetworkRequestRepresening?
 
     public func request<T: ResourceModeling>(_ resource: T, onCompletion: @escaping (T.Model) -> Void,
                  onError: @escaping (DBNetworkStackError) -> Void) -> NetworkTaskRepresenting {
         lastReuqest = resource.request
         onSuccess = { data in
-             onCompletion(try! resource.parse(data))
+            guard let result = try? resource.parse(data) else {
+                fatalError("Could not parse data into matching result type")
+            }
+            onCompletion(result)
         }
         onTypedSucess = { anyResult in
             guard let typedResult =  anyResult as? T.Model else {

        return NetworkTaskMock()
    }
    
    public func returnError(with error: DBNetworkStackError, count: Int = 1) {
        for _ in 0...count {
            onErrorCallback?(error)

        onErrorCallback = nil
    }
    
    /// Will return a sucessful request, by using the given data as a server response.
    ///
    /// - Parameters:
    ///   - data: the mock response from the server. `Data()` by default
    ///   - count: the yount how often the response gets triggerd. 1 by default
    public func returnSuccess(with data: Data = Data(), count: Int = 1) {
        for _ in 0...count {
            onSuccess?(data)
