1/**
2 * Copyright (c) 650 Industries.
3 * Copyright (c) Facebook, Inc. and its affiliates.
4 *
5 * This source code is licensed under the MIT license found in the
6 * LICENSE file in the root directory of this source tree.
7 */
8import { Platform } from 'react-native';
9// @ts-expect-error
10import Networking from 'react-native/Libraries/Network/RCTNetworking';
11export function fetchAsync(url) {
12    let id = null;
13    let responseText = null;
14    let headers = {};
15    let dataListener = null;
16    let completeListener = null;
17    let responseListener = null;
18    return new Promise((resolve, reject) => {
19        const addListener = Networking.addListener;
20        dataListener = addListener('didReceiveNetworkData', ([requestId, response]) => {
21            if (requestId === id) {
22                responseText = response;
23            }
24        });
25        responseListener = addListener('didReceiveNetworkResponse', ([requestId, status, responseHeaders]) => {
26            if (requestId === id) {
27                headers = responseHeaders;
28            }
29        });
30        completeListener = addListener('didCompleteNetworkResponse', ([requestId, error]) => {
31            if (requestId === id) {
32                if (error) {
33                    reject(error);
34                }
35                else {
36                    resolve({ body: responseText, headers });
37                }
38            }
39        });
40        Networking.sendRequest('GET', 'asyncRequest', url, {
41            'expo-platform': Platform.OS,
42        }, '', 'text', false, 0, (requestId) => {
43            id = requestId;
44        }, true);
45    }).finally(() => {
46        dataListener?.remove();
47        completeListener?.remove();
48        responseListener?.remove();
49    });
50}
51//# sourceMappingURL=fetchAsync.native.js.map