diff --git a/Libraries/Network/RCTHTTPRequestHandler.mm b/Libraries/Network/RCTHTTPRequestHandler.mm index 863fea857..2ddbb8a52 100644 --- a/Libraries/Network/RCTHTTPRequestHandler.mm +++ b/Libraries/Network/RCTHTTPRequestHandler.mm @@ -23,13 +23,16 @@ } @synthesize bridge = _bridge; +@synthesize methodQueue = _methodQueue; RCT_EXPORT_MODULE() - (void)invalidate { - [_session invalidateAndCancel]; - _session = nil; + dispatch_async(self->_methodQueue, ^{ + [self->_session invalidateAndCancel]; + self->_session = nil; + }); } - (BOOL)isValid @@ -73,8 +76,10 @@ RCT_EXPORT_MODULE() valueOptions:NSPointerFunctionsStrongMemory capacity:0]; } - - NSURLSessionDataTask *task = [_session dataTaskWithRequest:request]; + __block NSURLSessionDataTask *task = nil; + dispatch_sync(self->_methodQueue, ^{ + task = [self->_session dataTaskWithRequest:request]; + }); { std::lock_guard lock(_mutex); [_delegates setObject:delegate forKey:task];