import { AxiosPromise, AxiosResponse } from 'axios' import { unsafeAxiosMapper } from '../unsafeAxiosMapper' import ErrorLoadable from './ErrorLoadable' export default class AxiosLoadable extends ErrorLoadable { load(promise: AxiosPromise, then: (res: AxiosResponse) => T = res => unsafeAxiosMapper(res), reset = true) { if (reset) { this.reset() } promise .then(res => this.success(then(res))) .catch(err => { this.fail(err) throw err }) } }