@azure/core-rest-pipeline
Version:
Isomorphic client library for making HTTP requests in node.js and browser.
37 lines • 1.4 kB
JavaScript
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
/**
* Creates a native AbortSignal which reflects the state of the provided AbortSignalLike.
* If the AbortSignalLike is already a native AbortSignal, it is returned as is.
*
* React Native's AbortController polyfill (abort-controller\@3.x) does not support
* `AbortSignal.abort()`, `AbortController.abort(reason)`, or `AbortSignal.reason`.
* This simplified version works within those constraints.
*
* @param abortSignalLike - The AbortSignalLike to wrap.
* @returns - An object containing the native AbortSignal and an optional cleanup function.
*/
export function wrapAbortSignalLike(abortSignalLike) {
if (abortSignalLike instanceof AbortSignal) {
return { abortSignal: abortSignalLike };
}
const controller = new AbortController();
if (abortSignalLike.aborted) {
controller.abort();
return { abortSignal: controller.signal };
}
let needsCleanup = true;
function cleanup() {
if (needsCleanup) {
abortSignalLike.removeEventListener("abort", listener);
needsCleanup = false;
}
}
function listener() {
controller.abort();
cleanup();
}
abortSignalLike.addEventListener("abort", listener);
return { abortSignal: controller.signal, cleanup };
}
//# sourceMappingURL=wrapAbortSignal-rn.mjs.map