I've been out of the Scala game for a few years, but I would use a for comprehension with the cats EitherT monad transformer.
https://typelevel.org/cats/datatypes/eithert.html
def divisionProgramAsync(inputA: String, inputB: String): EitherT[Future, String, Double] =
for {
a <- EitherT(parseDoubleAsync(inputA))
b <- EitherT(parseDoubleAsync(inputB))
result <- EitherT(divideAsync(a, b))
} yield result