@@ -18,12 +18,17 @@ namespace RestSharp.Portable
1818 public class RestClient : IRestClient
1919 {
2020 private readonly IDictionary < string , IDeserializer > _contentHandlers = new Dictionary < string , IDeserializer > ( StringComparer . OrdinalIgnoreCase ) ;
21+
2122 private readonly IList < string > _acceptTypes = new List < string > ( ) ;
2223
2324 private readonly IDictionary < string , IEncoding > _encodingHandlers = new Dictionary < string , IEncoding > ( StringComparer . OrdinalIgnoreCase ) ;
25+
2426 private readonly IList < string > _acceptEncodings = new List < string > ( ) ;
2527
2628 private readonly List < Parameter > _defaultParameters = new List < Parameter > ( ) ;
29+
30+ private readonly RequestGuard _requestGuard = new RequestGuard ( ) ;
31+
2732 private HttpClient _httpClient ;
2833
2934 /// <summary>
@@ -121,9 +126,9 @@ public IList<Parameter> DefaultParameters
121126 /// <returns>Response returned</returns>
122127 public async Task < IRestResponse > Execute ( IRestRequest request )
123128 {
124- using ( var cts = new CancellationTokenSource ( ) )
129+ using ( _requestGuard . Guard ( CancellationToken . None ) )
125130 {
126- using ( var response = await ExecuteRequest ( request , cts . Token ) )
131+ using ( var response = await ExecuteRequest ( request , CancellationToken . None ) )
127132 {
128133 var restResponse = new RestResponse ( this , request ) ;
129134 await restResponse . LoadResponse ( response ) ;
@@ -146,9 +151,9 @@ public async Task<IRestResponse> Execute(IRestRequest request)
146151 /// </returns>
147152 public async Task < IRestResponse < T > > Execute < T > ( IRestRequest request )
148153 {
149- using ( var cts = new CancellationTokenSource ( ) )
154+ using ( _requestGuard . Guard ( CancellationToken . None ) )
150155 {
151- using ( var response = await ExecuteRequest ( request , cts . Token ) )
156+ using ( var response = await ExecuteRequest ( request , CancellationToken . None ) )
152157 {
153158 var restResponse = new RestResponse < T > ( this , request ) ;
154159 await restResponse . LoadResponse ( response ) ;
@@ -165,11 +170,14 @@ public async Task<IRestResponse<T>> Execute<T>(IRestRequest request)
165170 /// <returns>Response returned</returns>
166171 public async Task < IRestResponse > Execute ( IRestRequest request , CancellationToken ct )
167172 {
168- using ( var response = await ExecuteRequest ( request , ct ) )
173+ using ( _requestGuard . Guard ( ct ) )
169174 {
170- var restResponse = new RestResponse ( this , request ) ;
171- await restResponse . LoadResponse ( response ) ;
172- return restResponse ;
175+ using ( var response = await ExecuteRequest ( request , ct ) )
176+ {
177+ var restResponse = new RestResponse ( this , request ) ;
178+ await restResponse . LoadResponse ( response ) ;
179+ return restResponse ;
180+ }
173181 }
174182 }
175183
@@ -182,11 +190,14 @@ public async Task<IRestResponse> Execute(IRestRequest request, CancellationToken
182190 /// <returns>Response returned, with a deserialized object</returns>
183191 public async Task < IRestResponse < T > > Execute < T > ( IRestRequest request , CancellationToken ct )
184192 {
185- using ( var response = await ExecuteRequest ( request , ct ) )
193+ using ( _requestGuard . Guard ( ct ) )
186194 {
187- var restResponse = new RestResponse < T > ( this , request ) ;
188- await restResponse . LoadResponse ( response ) ;
189- return restResponse ;
195+ using ( var response = await ExecuteRequest ( request , ct ) )
196+ {
197+ var restResponse = new RestResponse < T > ( this , request ) ;
198+ await restResponse . LoadResponse ( response ) ;
199+ return restResponse ;
200+ }
190201 }
191202 }
192203
@@ -348,6 +359,7 @@ public IEncoding GetEncoding(IEnumerable<string> encodingIds)
348359 /// </summary>
349360 public void Dispose ( )
350361 {
362+ _requestGuard . Dispose ( ) ;
351363 if ( _httpClient == null )
352364 return ;
353365 _httpClient . Dispose ( ) ;
0 commit comments