communicate has a limited buffer size