UNPKG

@mcdevsl/mc-superset-ui

Version:
19 lines (16 loc) 658 B
import callApi from './callApi'; import rejectAfterTimeout from './rejectAfterTimeout'; import parseResponse from './parseResponse'; import { CallApi, ClientTimeout, ParseMethod } from '../types'; export default async function callApiAndParseWithTimeout<T extends ParseMethod = 'json'>({ timeout, parseMethod, ...rest }: { timeout?: ClientTimeout; parseMethod?: T } & CallApi) { const apiPromise = callApi(rest); const racedPromise = typeof timeout === 'number' && timeout > 0 ? Promise.race([apiPromise, rejectAfterTimeout<Response>(timeout)]) : apiPromise; return parseResponse(racedPromise, parseMethod); }