Registry / http-networking / bhttp
library1.2.8jsnpmunverified

bhttp is a Node.js HTTP client library designed to provide a sane and intuitive API, offering Streams2 support, automatic payload detection (URL-encoded, multipart/form-data, stream, Buffer, JSON), and robust session management with automatic cookie handling. It differentiates itself from alternatives like the core `http` module, `request`, `needle`, and `hyperquest` by addressing common issues such as low-level API complexity, agent pool blocking, and poor documentation. Key features include easy-to-use promises or nodebacks, multipart/form-data support with Streams2, and progress events for uploads and downloads. The package is currently at version 1.2.8, but its npm and GitHub activity indicate it has been abandoned for several years, making new releases unlikely.

npm install bhttp
INSTALL
IMPORT
SIG · BHTTP
B
bhttp
http-networkingjavascriptv1.2.8
Install
Import
Disk
Pass rate
0/ 6
Env Coverage0 / 6
glibc
1822
musl
1822
Install & Compatibility
Where this runs
tested against v? · npm install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
node 18226 runs
build_error
glibc
node 18226 runs
build_error
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

bhttp
const bhttp = require('bhttp');
bhttp is a CommonJS module and is imported using require().
bhttp.get
const bhttp = require('bhttp'); bhttp.get('http://example.com');
The `get` method is a common way to make HTTP GET requests with bhttp.
bhttp.post
const bhttp = require('bhttp'); bhttp.post('http://example.com/api', { data: 'payload' });
The `post` method is used for making HTTP POST requests, handling various payload types automatically.

This quickstart demonstrates making both promise-based and nodeback-style GET requests. It includes a critical workaround for bhttp's default HTTPS limitation, illustrating how to use a custom `https.Agent`.

const Promise = require("bluebird"); const bhttp = require("bhttp"); const https = require('https'); // Workaround for bhttp's lack of default HTTPS agent const httpsAgent = new https.Agent({ rejectUnauthorized: false }); // WARNING: Do not use rejectUnauthorized: false in production Promise.try(function() { // Using the custom HTTPS agent for a secure request (example with a test endpoint) return bhttp.get("https://icanhazip.com/", { agent: httpsAgent }); }).then(function(response) { console.log("Your IP is:", response.body.toString()); }).catch(function(err) { console.error("Error fetching IP:", err.message); }); // Example using nodebacks for a simple HTTP request (no HTTPS agent needed here) bhttp.get("http://example.com/data", {}, function(err, response) { if (err) { console.error("Error with nodeback request:", err.message); return; } console.log("Nodeback response status:", response.statusCode); });
Debug
Known issues
breakingbhttp does not use a HTTPS-capable agent by default, and all SSL-related options are ignored. This is a critical security vulnerability for production applications using HTTPS without explicit configuration.
fix
Always provide a custom `https.Agent` with appropriate SSL/TLS settings when making HTTPS requests. Example: `const https = require('https'); const agent = new https.Agent({ rejectUnauthorized: true }); bhttp.get(url, { agent: agent });`
affects: >=1.0.0
gotchaThe `bhttp` package appears to be abandoned, with the last npm publish and GitHub activity dating back over 8 years. This means there are no new features, bug fixes, or security updates, making it unsuitable for modern production environments due to potential unpatched vulnerabilities and compatibility issues with newer Node.js versions.
fix
Consider migrating to actively maintained HTTP client libraries such as `axios`, `node-fetch`, or the built-in `fetch` API in Node.js for new projects and existing applications.
affects: >=1.2.8
gotchaWhile bhttp supports Streams2, its age suggests potential incompatibility or suboptimal performance with newer Node.js stream APIs (e.g., Web Streams, `async` iterators).
fix
Thoroughly test stream-based operations in your target Node.js environment. For new stream-heavy applications, prefer modern alternatives that natively support `async` iterators and Web Streams.
affects: <=1.2.8
Errors
Common errors & fixes
Error: write EPROTO
Attempting an HTTPS request without explicitly configuring a `https.Agent` that handles SSL/TLS. bhttp ignores SSL-related options by default.
fix
Provide a `https.Agent` to `bhttp`'s options. For example: `const https = require('https'); const agent = new https.Agent({ rejectUnauthorized: true }); bhttp.get('https://example.com', { agent: agent });`
TypeError: bhttp.get is not a function
Incorrect import of the bhttp module or trying to call methods on an undefined `bhttp` object. This usually happens if `require('bhttp')` fails or if the module structure is misunderstood (e.g., expecting named exports).
fix
Ensure `bhttp` is correctly imported as a CommonJS module: `const bhttp = require('bhttp');`. Verify that `bhttp` is installed (`npm install bhttp`) and the path is correct.
Upgrade
Version history
1.2.8latest on npm
Audit
Dependencies
bluebirdrequiredProvides a Promises API for asynchronous operations, which bhttp optionally supports alongside nodebacks. It is listed as a direct dependency in the package.json.
Agent activity
25 hits · last 30 days
node
22
OpenAI (training)
1
Resources
bhttp — npm install bhttp · libregistry