Popsicle transport for sending requests over HTTP1 and HTTP2

Usage no npm install needed!

<script type="module">
  import popsicleTransportHttp from 'https://cdn.skypack.dev/popsicle-transport-http';


Popsicle Transport HTTP

NPM version NPM downloads Build status Build coverage

Popsicle transport for sending requests over HTTP1 and HTTP2.


npm install popsicle-transport-http --save


import { transport } from "popsicle-transport-http";

const req = new Request("/");
const res = await transport()(req, done);

Transport Options

The transport function sends the Servie Request to a remote server.

  • keepAlive?: number Duration to keep connection alive for re-use (default: 5000)
  • servername?: string Override remote server name for TLS
  • rejectUnauthorized?: boolean Rejects unauthorized TLS connections
  • negotiateHttpVersion?: NegotiateHttpVersion Configure HTTP version negotiation (default: HTTP2_FOR_HTTPS)
  • lookup?: DnsLookup Override default DNS resolution (default: dns.lookup)
  • TLS options:
    • ca?: string | Buffer | Array<string | Buffer> Set TLS CA
    • cert?: string | Buffer Set TLS certificate
    • key?: string | Buffer Set TLS key
    • secureContext?: SecureContext Set TLS secure context
    • secureProtocol?: string Set TLS secure protocol
    • secureOptions?: number Set TLS secure options
  • Custom connection managers (default: Infinity active sockets):
    • tlsSockets?: ConnectionManager<TLSSocket>
    • netSockets?: ConnectionManager<Socket>
    • http2Sessions?: ConnectionManager<ClientHttp2Session>
  • Custom create connections (all methods support async promises):
    • createHttp2Connection?: (authority, socket) => ClientHttp2Session
    • createNetConnection?: (options) => Socket
    • createTlsConnection?: (options) => TLSSocket


This project is written using TypeScript and publishes the definitions directly to NPM.