public async Task Initialize(CancellationToken cancellationToken) { if (_metadataCache == null) { _metadataCache = await InitializeMetadataCache(cancellationToken).ConfigureAwait(false); } if (_adapter == null) { _adapter = _metadataCache.GetODataAdapter(this); } }
public async Task Initialize(CancellationToken cancellationToken) { // Just allow one schema request at a time, unlikely to be much contention but avoids multiple requests for same endpoint. await _initializeSemaphore.WaitAsync(cancellationToken).ConfigureAwait(false); try { if (_metadataCache == null) { _metadataCache = await InitializeMetadataCache(cancellationToken) .ConfigureAwait(false); } if (_adapter == null) { _adapter = _metadataCache.GetODataAdapter(this); } } finally { _initializeSemaphore.Release(); } }