TypeScript Promise Helper

// Use this function to flatten try/catch blocks, i.e. const [err, res] = await to(somePromise());
export const to = async <T>(promise: Promise<T>): Promise<[null, T] | [Error, null]> => {
  try {
    return [null, await promise];
  } catch (err) {
    return [err as Error, null];
  }
};