public chain<E2, S2>(fn: (result: S) => Task<E2, S2>): Task<E | E2, S2> {
    return chain(fn, this)
  }