export const chain = <E, S, S2, E2>(
  fn: (result: S) => Task<E2, S2>,
  task: Task<E, S>,
): Task<E | E2, S2> =>
  new Task((reject, resolve) =>