Tie the celery, carrot, thyme, parsley, and bay leaf into a bundle using cotton butcher?s twine. Place the beans, bundle, and onion into a pot. Add just enough water to barely cover the beans. Bring to a simmer, partially cover, and cook for 1 to 2 hours until beans are barely tender.
After 30 minutes, add the salt to the beans. Occasionally check on the beans and add water to cover the beans, if needed.
When beans are just barely tender, drain them and remove the carrot bundle. Toss the beans while hot with the olive oil, lime juice, onion, cilantro, cumin, and chili powder. Chill thoroughly and season with salt and pepper.
Recipe courtesy of Alton Brown