/// <summary> /// Checks the <see cref="IOperation"/> to see if it supports retries and then checks the <see cref="IOperationResult"/> /// to see if the error or server response supports retries. /// </summary> /// <typeparam name="T">The Type of the body of the request.</typeparam> /// <param name="operationResult">The <see cref="IOperationResult"/> to check from the server.</param> /// <param name="operation">The <see cref="IOperation"/> to check to see if it supports retries. Not all operations support retries.</param> /// <returns></returns> public bool CanRetryOperation(IOperationResult operationResult, IOperation operation) { var responseStatus = operationResult.Status; if (responseStatus == ResponseStatus.VBucketBelongsToAnotherServer) { return(CheckForConfigUpdates(operation)); } return(operation.CanRetry() && operationResult.ShouldRetry()); }