Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Promises in Common Lisp

Companion source code for the post Promises and Lisp. Contains a not-meant-for-production implementation of promises in promise.lisp and promises based CL counterparts in pcl.lisp.

Install using quicklisp by symlinking the project directory inside ~/quicklisp/local-projects/ and then run (ql:quickload :promises).

Runloop facilities are provided by iolib.

Contains no networking code, all async calls (e.g. get-tweets-for, http-get, etc.) are stubbed using runloop timers.

test[123].lisp contain some example source code to run.

You can run the test code like this:

(in-package :promises-test3)
(run-function (make-instance 'runloop) 7 #'run "foo")