import {
isNetworkError,
isRateLimitError,
isLayersBrowseError,
isRetryable,
getRetryDelay,
} from '@protonagency/commerce-blocks-sdk';
const result = await api.browse({
collectionHandle: 'shoes',
sortOrderCode: 'best_selling'
});
if (result.error) {
const error = result.error;
// Check specific error types
if (isNetworkError(error)) {
console.log('Network issue:', error.code); // TIMEOUT, OFFLINE, etc.
}
if (isRateLimitError(error)) {
console.log('Rate limited, retry in:', error.retryAfterMs, 'ms');
}
// HTTP 425 (Too Early) - Search data not ready yet
if (isHttpError(error) && error.status === 425) {
const retryAfter = error.response?.headers?.['retry-after'];
console.log('Search not ready, retry after:', retryAfter, 'seconds');
}
if (isLayersBrowseError(error)) {
console.log('Browse error code:', error.code); // COLLECTION_NOT_FOUND, etc.
}
// Check if error is retryable
if (isRetryable(error)) {
const delay = getRetryDelay(error) ?? 1000;
setTimeout(() => retryRequest(), delay);
}
}