let both (a: 'a Deferred.t) (b: 'b Deferred.t) : ('a * 'b) Deferred.t = a >>= fun a -> b >>= fun b -> return (a, b)