async def METHOD_NAME(self, af, socktype, proto=0,
                      source=None, destination=None, timeout=None,
                      ssl_context=None, server_hostname=None):
    if destination is None and socktype == socket.SOCK_DGRAM and \
       _is_win32:
        raise NotImplementedError('destinationless datagram sockets '
                                  'are not supported by asyncio '
                                  'on Windows')
    loop = _get_running_loop()
    if socktype == socket.SOCK_DGRAM:
        transport, protocol = await loop.create_datagram_endpoint(
            _DatagramProtocol, source, family=af,
            proto=proto, remote_addr=destination)
        return DatagramSocket(af, transport, protocol)
    elif socktype == socket.SOCK_STREAM:
        (r, w) = await _maybe_wait_for(
            asyncio.open_connection(destination[0],
                                    destination[1],
                                    ssl=ssl_context,
                                    family=af,
                                    proto=proto,
                                    local_addr=source,
                                    server_hostname=server_hostname),
            timeout)
        return StreamSocket(af, r, w)
    raise NotImplementedError('unsupported socket ' +
                              f'type {socktype}')  # pragma: no cover