Skip to content

Commit decb212

Browse files
committed
improve error response
1 parent f02dd3c commit decb212

File tree

1 file changed

+27
-2
lines changed

1 file changed

+27
-2
lines changed

src/request.ts

+27-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// SPDX-License-Identifier: Apache-2.0
33

44
import fetch from "node-fetch";
5-
import type { RequestInfo, RequestInit, Response } from "node-fetch";
5+
import type { RequestInfo, RequestInit, Response, Headers } from "node-fetch";
66
import { buildQueryString } from "./utils";
77
import {
88
AuthClient,
@@ -52,6 +52,25 @@ async function fetchWithRetries(
5252
return res;
5353
}
5454

55+
class TwitterResponseError extends Error {
56+
status: number;
57+
statusText: string;
58+
headers: Record<string, any>;
59+
error: Record<string, any>;
60+
constructor(
61+
status: number,
62+
statusText: string,
63+
headers: Headers,
64+
error: Record<string, any>
65+
) {
66+
super();
67+
this.status = status;
68+
this.statusText = statusText;
69+
this.headers = Object.fromEntries(headers);
70+
this.error = error;
71+
}
72+
}
73+
5574
export async function request({
5675
auth,
5776
endpoint,
@@ -90,7 +109,13 @@ export async function request({
90109
max_retries
91110
);
92111
if (!response.ok) {
93-
throw new Error(`${response.status}, ${response.statusText}`);
112+
const error = await response.json();
113+
throw new TwitterResponseError(
114+
response.status,
115+
response.statusText,
116+
response.headers,
117+
error
118+
);
94119
}
95120
return response;
96121
}

0 commit comments

Comments
 (0)