I think in some similar cases you might have called flush here? not sure how this will behave if Message is big -- responsibility of the loop that might call write though instead?