waiting if buffer full improved