Fix #14: Implement fetch() API