I want to write a function to measure the performance of parts of code (other methods) that could return a value. This is what I came out at the moment:
const fn = async (): Promise<any> => {
    setTimeout(async (): Promise<any> => {
        return new Promise((resolve) => resolve('Hello World!'));
    }, 3000);
};
async measure(fn: () => Promise<any>): Promise<any> {
    const startTime = this.performance.now();
    const result = await functionToMeasure();
    const endTime = this.performance.now();
    const executionTime = endTime - startTime;
    console.log(`Executed in ${executionTime} ms`);
    return result;
}
const result = async measure(functionToMeasure); // result is undefined
The result is that functionToMeasure actually runs but it never returns something and at the moment I can use it only with void function.
I'd like to fix it if possible, or I can change completely if there's a better way to do it.
EDIT:
Actual code
const callback = async (): Promise<any> => {
    return await doSomethingAndReturn();
};
const searchResults: string[] = await measure(callback);
Do I've to wrap doSomethingAndReturn in an async Promise?
 
    