 
     guard let data = data else {
       let networkError = self.networkServiceError(HTTPURLResponse: HTTPURLResponse, error: error) ?? NetworkServiceError.noDataProvided
-      return .failure(networkError, URLResponse as? HTTPURLResponse)
+      return .failure(networkError, HTTPURLResponse)
     }
 
     switch HTTPURLResponse.statusCode {

    switch HTTPURLResponse.statusCode {
    case 400..<600:
      return .statusCodeError(statusCode: HTTPURLResponse.statusCode)
    default: break
    }

    if let error = error {
      return .sessionError(error: error)
    }
    return nil
  }

}

/// # Failure case
///
/// Defines a response that failed, contains:
///   - A NetworkServiceError
///   - A HTTPURLResponse if it exists
///
/// ## Reasons for failure can be (in order):
///   1. No HTTPURLResponse with a URLSession error
