cancelable method
Implementation
IO<A> cancelable(IO<Unit> fin) => IO.uncancelable((poll) {
return start().flatMap((fiber) {
return poll(fiber.join())
.onCancel(fin.productR(() => fiber.cancel()))
.flatMap((oc) =>
oc.embed(poll(IO.canceled.productR(() => IO.never()))));
});
});