Performs an overlapped request (via `perform` callable) and saves
        the token and the (`overlapped`, `perform`, `complete`) trio.

def request_generic(self, act, coro, perform, complete):
        """
        Performs an overlapped request (via `perform` callable) and saves
        the token and the (`overlapped`, `perform`, `complete`) trio.
        """
        overlapped = pywintypes.OVERLAPPED()
        overlapped.object = act
        self.add_token(act, coro, (overlapped, perform, complete))

        try:
            rc, nbytes = perform(act, overlapped)

            if rc == 0:
                # ah geez, it didn't got in the iocp, we have a result!"
                win32file.PostQueuedCompletionStatus(
                    self.iocp, nbytes, 0, overlapped
                )
        except pywintypes.error, exc:
            raise SocketError(exc)