diff --git a/packages/toolkit/src/createAsyncThunk.ts b/packages/toolkit/src/createAsyncThunk.ts index f384ab9af2..d8d390a3aa 100644 --- a/packages/toolkit/src/createAsyncThunk.ts +++ b/packages/toolkit/src/createAsyncThunk.ts @@ -735,7 +735,15 @@ export function unwrapResult( throw action.payload } if (action.error) { - throw action.error + const errorInstance: any = new Error(action.error.message || action.error.name || 'Thunk Error') + + for (const prop in action.error) { + if (!errorInstance[prop]) { + errorInstance[prop] = action.error[prop] + } + } + + throw errorInstance } return action.payload } diff --git a/packages/toolkit/src/query/core/buildInitiate.ts b/packages/toolkit/src/query/core/buildInitiate.ts index f13ea57740..b0c2f0a71b 100644 --- a/packages/toolkit/src/query/core/buildInitiate.ts +++ b/packages/toolkit/src/query/core/buildInitiate.ts @@ -362,7 +362,23 @@ You must add the middleware for RTK-Query to function correctly!`, const result = await statePromise if (result.isError) { - throw result.error + let errorMessage = ''; + const errorMap = result.error as any; + + if (errorMap && errorMap.data && errorMap.status) { + errorMessage = `RTK Query responded with ${errorMap.status} when requesting ${errorMap.data.path}` + } else { + errorMessage = errorMap.message || errorMap.name || 'RTK Query Error' + } + + const errorToThrow: any = new Error(errorMessage) + for (const prop in errorMap) { + if (!errorToThrow[prop]) { + errorToThrow[prop] = errorMap[prop] + } + } + + throw errorToThrow } return result.data