addInitial(initializer, options, callback) {
    if (typeof options === 'function') {
      callback = /** @type {AddEdgeCallback} */ (options);
      options = {};
    }

    const promise = this.ensureNode(initializer.to.node, 'inbound')
      .then((to) => {
        const socket = internalSocket.createSocket(initializer.metadata, {
          debug: this.debug,
          async: this.asyncDelivery,
        });

        // Subscribe to events from the socket
        this.subscribeSocket(socket);

        return connectPort(socket, to, initializer.to.port, initializer.to.index, true);
      })
      .then((socket) => {
        this.connections.push(socket);
        const init = {
          socket,
          data: initializer.from.data,
        };
        this.initials.push(init);
        this.nextInitials.push(init);
        if (this.isRunning()) {
          // Network is running now, send initials immediately
          (this.sendInitials)();
        } else if (!this.isStopped()) {
          // Network has finished but hasn't been stopped, set
          // started and set
          this.setStarted(true);
          (this.sendInitials)();
        }
        return socket;
      });
    if (callback) {
      deprecated('Providing a callback to Network.addInitial is deprecated, use Promises');
      promise.then((socket) => {
        callback(null, socket);
      }, callback);
    }
    return promise;
  }
@param {import("fbp-graph/lib/Types").GraphIIP} initializer
@param {Object} options
@param {AddEdgeCallback} [callback]
@returns {Promise<internalSocket.InternalSocket>}