// No array gathering support so one by one private void SendOne(org.objectfabric.Queue buffs) { org.objectfabric.CLRBuff buff = (org.objectfabric.CLRBuff) buffs.poll(); if (buff == null) WriteComplete(); else { try { ArraySegment<byte> buffer = new ArraySegment<byte>(buff.array(), buff.position(), buff.limit() - buff.position()); Task task = _socket.SendAsync(buffer, WebSocketMessageType.Binary, false, CancellationToken.None); task.ContinueWith(_ => { Recycle(buff); SendOne(buffs); }); } catch (Exception ex) { Recycle(buff); OnError(ex); } } }