Future<Option<R>> bindFuture<R, T>(Future<Option<R>> Function(T t) f) => foldFuture(() => None().toFuture() as Future<Option<R>>, (v) => f(v! as T));