function then(fn) {
  return async (value) => {
    return fn(await value);
  };
}

var result = 1
  |> (async (x) => await x + 1)
  |> then((x) => x + 1);

result.then(val => {
  expect(val).toBe(3);
});
