Skip to content

Commit 3dd6162

Browse files
authored
feat(rpc): update Response.finished to return string instead of Error (#3071)
1 parent 47e30f0 commit 3dd6162

File tree

8 files changed

+18
-19
lines changed

8 files changed

+18
-19
lines changed

src/chromium/crNetworkManager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ export class CRNetworkManager {
243243

244244
_handleRequestRedirect(request: InterceptableRequest, responsePayload: Protocol.Network.Response) {
245245
const response = this._createResponse(request, responsePayload);
246-
response._requestFinished(new Error('Response body is unavailable for redirect responses'));
246+
response._requestFinished('Response body is unavailable for redirect responses');
247247
this._requestIdToRequest.delete(request._requestId);
248248
if (request._interceptionId)
249249
this._attemptedAuthentications.delete(request._interceptionId);

src/firefox/ffNetworkManager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ export class FFNetworkManager {
9090
// Keep redirected requests in the map for future reference as redirectedFrom.
9191
const isRedirected = response.status() >= 300 && response.status() <= 399;
9292
if (isRedirected) {
93-
response._requestFinished(new Error('Response body is unavailable for redirect responses'));
93+
response._requestFinished('Response body is unavailable for redirect responses');
9494
} else {
9595
this._requests.delete(request._id);
9696
response._requestFinished();

src/network.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -234,8 +234,8 @@ type GetResponseBodyCallback = () => Promise<Buffer>;
234234
export class Response {
235235
private _request: Request;
236236
private _contentPromise: Promise<Buffer> | null = null;
237-
_finishedPromise: Promise<Error | null>;
238-
private _finishedPromiseCallback: any;
237+
_finishedPromise: Promise<{ error?: string }>;
238+
private _finishedPromiseCallback: (arg: { error?: string }) => void = () => {};
239239
private _status: number;
240240
private _statusText: string;
241241
private _url: string;
@@ -255,8 +255,8 @@ export class Response {
255255
this._request._setResponse(this);
256256
}
257257

258-
_requestFinished(error?: Error) {
259-
this._finishedPromiseCallback.call(null, error || null);
258+
_requestFinished(error?: string) {
259+
this._finishedPromiseCallback({ error });
260260
}
261261

262262
url(): string {
@@ -280,14 +280,14 @@ export class Response {
280280
}
281281

282282
finished(): Promise<Error | null> {
283-
return this._finishedPromise;
283+
return this._finishedPromise.then(({ error }) => error ? new Error(error) : null);
284284
}
285285

286286
body(): Promise<Buffer> {
287287
if (!this._contentPromise) {
288-
this._contentPromise = this._finishedPromise.then(async error => {
288+
this._contentPromise = this._finishedPromise.then(async ({ error }) => {
289289
if (error)
290-
throw error;
290+
throw new Error(error);
291291
return this._getResponseBodyCallback();
292292
});
293293
}

src/rpc/channels.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1472,7 +1472,7 @@ export type ResponseBodyResult = {
14721472
};
14731473
export type ResponseFinishedParams = {};
14741474
export type ResponseFinishedResult = {
1475-
error?: SerializedError,
1475+
error?: string,
14761476
};
14771477

14781478
// ----------- ConsoleMessage -----------

src/rpc/client/network.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import * as types from '../../types';
1919
import { RequestChannel, ResponseChannel, RouteChannel, RequestInitializer, ResponseInitializer, RouteInitializer } from '../channels';
2020
import { ChannelOwner } from './channelOwner';
2121
import { Frame } from './frame';
22-
import { normalizeFulfillParameters, headersArrayToObject, normalizeContinueOverrides, parseError } from '../serializers';
22+
import { normalizeFulfillParameters, headersArrayToObject, normalizeContinueOverrides } from '../serializers';
2323

2424
export type NetworkCookie = {
2525
name: string,
@@ -206,7 +206,7 @@ export class Response extends ChannelOwner<ResponseChannel, ResponseInitializer>
206206
async finished(): Promise<Error | null> {
207207
const result = await this._channel.finished();
208208
if (result.error)
209-
return parseError(result.error);
209+
return new Error(result.error);
210210
return null;
211211
}
212212

src/rpc/protocol.pdl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1340,7 +1340,7 @@ interface Response
13401340

13411341
command finished
13421342
returns
1343-
error?: SerializedError
1343+
error?: string
13441344

13451345
interface ConsoleMessage
13461346
initializer

src/rpc/server/networkDispatchers.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
*/
1616

1717
import { Request, Response, Route } from '../../network';
18-
import { RequestChannel, ResponseChannel, RouteChannel, ResponseInitializer, RequestInitializer, RouteInitializer, Binary, SerializedError } from '../channels';
18+
import { RequestChannel, ResponseChannel, RouteChannel, ResponseInitializer, RequestInitializer, RouteInitializer, Binary } from '../channels';
1919
import { Dispatcher, DispatcherScope, lookupNullableDispatcher, existingDispatcher } from './dispatcher';
2020
import { FrameDispatcher } from './frameDispatcher';
21-
import { headersObjectToArray, headersArrayToObject, serializeError } from '../serializers';
21+
import { headersObjectToArray, headersArrayToObject } from '../serializers';
2222
import * as types from '../../types';
2323

2424
export class RequestDispatcher extends Dispatcher<Request, RequestInitializer> implements RequestChannel {
@@ -64,9 +64,8 @@ export class ResponseDispatcher extends Dispatcher<Response, ResponseInitializer
6464
});
6565
}
6666

67-
async finished(): Promise<{ error?: SerializedError }> {
68-
const error = await this._object.finished();
69-
return { error: error ? serializeError(error) : undefined };
67+
async finished(): Promise<{ error?: string }> {
68+
return await this._object._finishedPromise;
7069
}
7170

7271
async body(): Promise<{ binary: Binary }> {

src/webkit/wkPage.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -853,7 +853,7 @@ export class WKPage implements PageDelegate {
853853

854854
private _handleRequestRedirect(request: WKInterceptableRequest, responsePayload: Protocol.Network.Response) {
855855
const response = request.createResponse(responsePayload);
856-
response._requestFinished(new Error('Response body is unavailable for redirect responses'));
856+
response._requestFinished('Response body is unavailable for redirect responses');
857857
this._requestIdToRequest.delete(request._requestId);
858858
this._page._frameManager.requestReceivedResponse(response);
859859
this._page._frameManager.requestFinished(request.request);

0 commit comments

Comments
 (0)