MaybePromise: {
    [toStringTag]: string;
    catch<T, TResult>(producer: MaybePromise<T> | (() => MaybePromise<T>), onrejected?: null | ((reason: any) => MaybePromise<TResult>)): MaybePromise<TResult>;
    finally<T>(producer: MaybePromise<T> | (() => MaybePromise<T>), onfinally?: null | (() => MaybePromise<void>)): MaybePromise<T>;
    is<T>(value: MaybePromise<T>): value is PromiseLike<T>;
    then<I, O1, O2>(producer: MaybePromise<I> | (() => MaybePromise<I>), resolve?: null | ((input: I) => MaybePromise<O1>), reject?: null | ((error: any) => MaybePromise<O2>)): MaybePromise<O1 | O2>;
}

Type declaration