'send data from the client side. fire and forget.
Must only be called from the same cooperative context as the
IOWorker.'

def send_fast(self, data):

    if ((len(self.send_buf) == 0) and (not self._connecting) and (not self.closed)):
        try:
            l = self.socket.send(data, socket.MSG_DONTWAIT)
            if (l == len(self.send_buf)):
                return
            data = data[l]
        except socket.error as (s_errno, strerror):
            if (s_errno != errno.EAGAIN):
                log.error(('Socket    error:    ' + strerror))
                self.close()
                return
    IOWorker.send(self, data)
    self.pinger.ping()
