func Zip(first Mono, second Mono, others ...Mono) ZipBuilder {
	if len(others) < 1 {
		return []mono.Mono{
			unpackRawPublisher(first),
			unpackRawPublisher(second),
		}
	}
	sources := make([]mono.Mono, 2+len(others))
	sources[0] = unpackRawPublisher(first)
	sources[1] = unpackRawPublisher(second)
	for i := 0; i < len(others); i++ {
		sources[i+2] = unpackRawPublisher(others[i])
	}
	return sources
}
Zip merges given Monos into a new Mono that will be fulfilled when all of the given Monos have produced an item, aggregating their values into a Tuple.
package mono
import (
	"github.com/jjeffcaii/reactor-go"
	"github.com/jjeffcaii/reactor-go/mono"
	"github.com/rsocket/rsocket-go/internal/common"
	"github.com/rsocket/rsocket-go/payload"
	"github.com/rsocket/rsocket-go/rx"
)