Skip to content

Commit b14d603

Browse files
committed
adjust fetch util
1 parent 53b149c commit b14d603

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

packages/browser/src/transports/fetch.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { clearCachedFetchImplementation, getNativeFetchImplementation } from './
1111
*/
1212
export function makeFetchTransport(
1313
options: BrowserTransportOptions,
14-
nativeFetch: FetchImpl = getNativeFetchImplementation(),
14+
nativeFetch: FetchImpl | undefined = getNativeFetchImplementation(),
1515
): Transport {
1616
let pendingBodySize = 0;
1717
let pendingCount = 0;
@@ -41,6 +41,11 @@ export function makeFetchTransport(
4141
...options.fetchOptions,
4242
};
4343

44+
if (!nativeFetch) {
45+
clearCachedFetchImplementation();
46+
return rejectedSyncPromise('No fetch implementation available');
47+
}
48+
4449
try {
4550
return nativeFetch(options.url, requestOptions).then(response => {
4651
pendingBodySize -= requestSize;

packages/browser/src/transports/utils.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ export type FetchImpl = typeof fetch;
4545
* Firefox: NetworkError when attempting to fetch resource
4646
* Safari: resource blocked by content blocker
4747
*/
48-
export function getNativeFetchImplementation(): FetchImpl {
48+
export function getNativeFetchImplementation(): FetchImpl | undefined {
4949
if (cachedFetchImpl) {
5050
return cachedFetchImpl;
5151
}
@@ -75,7 +75,13 @@ export function getNativeFetchImplementation(): FetchImpl {
7575
}
7676
}
7777

78-
return (cachedFetchImpl = fetchImpl.bind(WINDOW));
78+
try {
79+
return (cachedFetchImpl = fetchImpl.bind(WINDOW));
80+
} catch (e) {
81+
// empty
82+
}
83+
84+
return undefined;
7985
/* eslint-enable @typescript-eslint/unbound-method */
8086
}
8187

0 commit comments

Comments
 (0)