Skip to content
Lucent
Esc
↑↓navigate↵open
On this page

lucent/http module

Sends HTTP/HTTPS requests.

const http = require("lucent/http");

Members

http.request()

Sends an HTTP request and returns its response. Requests cancel automatically when the script stops.

http.request(url: string | URL, options?: HttpRequestOptions): Effect.Effect<HttpResponse, HttpError>
Name Type Required Default Description
url string | URL
options HttpRequestOptions

Returns: HttpResponse

Errors: HttpError

Example

const http = require("lucent/http");
const script = require("lucent/script");

module.exports = function* () {
  const response = yield* http.request("https://example.com/events", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ event: "finished" }),
    timeout: "15 seconds",
  });
  if (!response.ok) return yield* script.stop(`HTTP ${response.status}`);
  yield* script.log(yield* response.json());
};

Example

Continue when an optional request times out.

const http = require("lucent/http");
const script = require("lucent/script");
const { Effect } = require("effect");

module.exports = function* () {
  yield* Effect.catch(
    http.request("https://example.com", { timeout: "5 seconds" }),
    (error) => {
      if (error instanceof http.HttpError && error.reason === "timeout") {
        return script.log("Request timed out. Continuing without the response.");
      }
      return Effect.fail(error);
    },
  );
};
Type preview
Open page

Last updated on September 26, 2026

Was this page helpful?