first pass at WriteAsync; F# doesn't allow overloads so I need to learn more about how this works