/// <summary>
        /// Refresh the authentication header for the next HTTP requests.
        /// </summary>
        public virtual void RefreshOAuthHeader()
        {
            bool       updated   = false;
            OAuthToken lastToken = null;

            lock (syncRoot)            // Threads-safe
            {
                lastToken = _token;
                if (null == lastToken)
                {
                    lastToken = OAuthToken.Load(_userName);
                    // DEBUG
                    if (logger.IsDebugEnabled)
                    {
                        logger.DebugFormat("Retrieved last OAuth token: {0}", lastToken);
                    }
                }

                if (null == lastToken || lastToken.IsExpired)
                {
                    // Refresh the token
                    lastToken = RefreshAccessToken(_userName, _password);
                    updated   = true;
                }

                _token = lastToken;
            }

            if (null != lastToken)
            {
                if (updated)
                {
                    lastToken.Save(_userName);
                }

                // Updates the Salesforce RestAPI base URL
                lock (_clientTransport)
                {
                    if (updated || String.IsNullOrEmpty(_clientTransport.Url))
                    {
                        _clientTransport.Url = lastToken.InstanceUrl.TrimEnd('/', '\\') + "/" + StreamingAPIEndpoint;
                        _clientTransport.SetOption(HttpRequestHeader.Authorization.ToString(), "OAuth " + lastToken.AccessToken);
                    }
                }
            }
        }