chore: throw instead of returning error from fetch (#10451)

This commit is contained in:
Yury Semikhatsky 2021-11-19 20:32:29 -08:00 committed by GitHub
parent fde2f6a77f
commit 9c23a78c32
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 74 additions and 84 deletions

View File

@ -184,9 +184,7 @@ export class APIRequestContext extends ChannelOwner<channels.APIRequestContextCh
failOnStatusCode: options.failOnStatusCode,
ignoreHTTPSErrors: options.ignoreHTTPSErrors,
});
if (result.error)
throw new Error(result.error);
return new APIResponse(this, result.response!);
return new APIResponse(this, result.response);
});
}

View File

@ -179,18 +179,16 @@ export class APIRequestContextDispatcher extends Dispatcher<APIRequestContext, c
}
async fetch(params: channels.APIRequestContextFetchParams, metadata?: channels.Metadata): Promise<channels.APIRequestContextFetchResult> {
const { fetchResponse, error } = await this._object.fetch(params);
let response;
if (fetchResponse) {
response = {
const fetchResponse = await this._object.fetch(params);
return {
response: {
url: fetchResponse.url,
status: fetchResponse.status,
statusText: fetchResponse.statusText,
headers: fetchResponse.headers,
fetchUid: fetchResponse.fetchUid
};
}
return { response, error };
};
}
async fetchResponseBody(params: channels.APIRequestContextFetchResponseBodyParams, metadata?: channels.Metadata): Promise<channels.APIRequestContextFetchResponseBodyResult> {

View File

@ -296,8 +296,7 @@ export type APIRequestContextFetchOptions = {
ignoreHTTPSErrors?: boolean,
};
export type APIRequestContextFetchResult = {
response?: APIResponse,
error?: string,
response: APIResponse,
};
export type APIRequestContextFetchResponseBodyParams = {
fetchUid: string,

View File

@ -254,8 +254,7 @@ APIRequestContext:
failOnStatusCode: boolean?
ignoreHTTPSErrors: boolean?
returns:
response: APIResponse?
error: string?
response: APIResponse
fetchResponseBody:
parameters:

View File

@ -85,8 +85,7 @@ export abstract class APIRequestContext extends SdkObject {
return uid;
}
async fetch(params: channels.APIRequestContextFetchParams): Promise<{fetchResponse?: Omit<types.APIResponse, 'body'> & { fetchUid: string }, error?: string}> {
try {
async fetch(params: channels.APIRequestContextFetchParams): Promise<Omit<types.APIResponse, 'body'> & { fetchUid: string }> {
const headers: { [name: string]: string } = {};
const defaults = this._defaultOptions();
headers['user-agent'] = defaults.userAgent;
@ -152,11 +151,8 @@ export abstract class APIRequestContext extends SdkObject {
const fetchResponse = await this._sendRequest(requestUrl, options, postData);
const fetchUid = this._storeResponseBody(fetchResponse.body);
if (params.failOnStatusCode && (fetchResponse.status < 200 || fetchResponse.status >= 400))
return { error: `${fetchResponse.status} ${fetchResponse.statusText}` };
return { fetchResponse: { ...fetchResponse, fetchUid } };
} catch (e) {
return { error: e instanceof Error ? e.message : String(e) };
}
throw new Error(`${fetchResponse.status} ${fetchResponse.statusText}`);
return { ...fetchResponse, fetchUid };
}
private async _updateCookiesFromHeader(responseUrl: string, setCookie: string[]) {