UNPKG

@opentelemetry/instrumentation

Version:
74 lines 2.25 kB
/* * Copyright The OpenTelemetry Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * function to execute patched function and being able to catch errors * @param execute - function to be executed * @param onFinish - callback to run when execute finishes */ export function safeExecuteInTheMiddle(execute, onFinish, preventThrowingError) { let error; let result; try { result = execute(); } catch (e) { error = e; } finally { onFinish(error, result); if (error && !preventThrowingError) { // eslint-disable-next-line no-unsafe-finally throw error; } // eslint-disable-next-line no-unsafe-finally return result; } } /** * Async function to execute patched function and being able to catch errors * @param execute - function to be executed * @param onFinish - callback to run when execute finishes */ export async function safeExecuteInTheMiddleAsync(execute, onFinish, preventThrowingError) { let error; let result; try { result = await execute(); } catch (e) { error = e; } finally { onFinish(error, result); if (error && !preventThrowingError) { // eslint-disable-next-line no-unsafe-finally throw error; } // eslint-disable-next-line no-unsafe-finally return result; } } /** * Checks if certain function has been already wrapped * @param func */ export function isWrapped(func) { return (typeof func === 'function' && typeof func.__original === 'function' && typeof func.__unwrap === 'function' && func.__wrapped === true); } //# sourceMappingURL=utils.js.map