Combina F # asíncrono y tal vez expresión computacional

Di que quiero devolver unOption mientras que en unasync flujo de trabajo:

let run = 
    async {
        let! x = doAsyncThing
        let! y = doNextAsyncThing x
        match y with
        | None -> return None
        | Some z -> return Some <| f z
    }

Lo ideal sería utilizar la expresión de cálculo de tal vez de FSharpx al mismo tiempo que async para evitar hacer elmatch. Podría crear un constructor personalizado, pero ¿hay una manera de combinar genéricamente dos expresiones de cálculo? Podría verse algo como esto:

let run = 
    async {
        let! x = doAsyncThing
        let! y = doNextAsyncThing x
        return! f y
    }

Respuestas a la pregunta(3)

Su respuesta a la pregunta