[gem] Make TX path asynchronous