void remove(OnlineFileRequest* request) {
     allRequests.erase(request);
     if (activeRequests.erase(request)) {
         activatePendingRequest();
     } else {
         pendingRequests.remove(request);
     }
 }
 void activateRequest(OnlineFileRequest* request) {
     activeRequests.insert(request);
     request->request = httpFileSource.request(request->resource, [=] (Response response) {
         activeRequests.erase(request);
         activatePendingRequest();
         request->request.reset();
         request->completed(response);
     });
 }
 void remove(OnlineFileRequest* request) {
     allRequests.erase(request);
     if (activeRequests.erase(request)) {
         activatePendingRequest();
     } else {
         auto it = pendingRequestsMap.find(request);
         if (it != pendingRequestsMap.end()) {
             pendingRequestsList.erase(it->second);
             pendingRequestsMap.erase(it);
         }
     }
 }
    void activateRequest(OnlineFileRequest* request) {
        auto callback = [=](Response response) {
            activeRequests.erase(request);
            request->request.reset();
            request->completed(response);
            activatePendingRequest();
        };

        activeRequests.insert(request);

        if (online) {
            request->request = httpFileSource.request(request->resource, callback);
        } else {
            Response response;
            response.error = std::make_unique<Response::Error>(Response::Error::Reason::Connection,
                                                               "Online connectivity is disabled.");
            callback(response);
        }

    }